fork download
  1. #include <bits/stdc++.h>
  2. #define ll long long
  3. using namespace std;
  4. ll n, a[27], b[27], x[27], dd[27], pa[27], pb[27], res;
  5. void ghinghiem()
  6. {
  7. bool ok=1;
  8. for(ll i=1;i<=n && ok;i++) for(ll j=i+1;j<=n;j++){
  9. ll u=x[i];
  10. ll v=x[j];
  11. if( (pa[u] < pa[v]) != (pb[u] < pb[v])){
  12. ok=0;
  13. break;
  14. }
  15. }
  16. if(ok)res++;
  17. }
  18. void backtrack(ll i)
  19. {
  20. for(ll j=1;j<=n;j++) if(!dd[j]){
  21. x[i]=j;
  22. dd[j]=1;
  23. if(i==n)ghinghiem();
  24. else backtrack(i+1);
  25. dd[j]=0;
  26. }
  27. }
  28. int main()
  29. {
  30. ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
  31. cin>>n;
  32. for(int i=1;i<=n;i++){ cin>>a[i]; pa[a[i]]=i; }
  33. for(int i=1;i<=n;i++){ cin>>b[i]; pb[b[i]]=i; }
  34. backtrack(1);
  35. cout<<res;
  36. return 0;
  37. }
  38. /*
  39.   Solve by: Truong Tuan Kiet - Informatics K36. Solve in 11h00 - 27/6/2025
  40. */
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
Success #stdin #stdout 0.01s 5272KB
stdin
Standard input is empty
stdout
Standard output is empty