Submission #49086

#TimeUsernameProblemLanguageResultExecution timeMemory
49086amiDojave (COCI17_dojave)C++14
42 / 140
4074 ms10088 KiB
    #include <bits/stdc++.h>
    #define sz(c)      int(c.size())
    #define rep(i,a,b) for (int i=a; i<(b); ++i)
    #define per(i,a,b) for (int i=(b)-1; i>=(a); --i)
    #define bin(x) bitset<4>(x)
    using namespace std;
    using i64 = long long;
     
    int const MAXN=1<<21;
    int n;
    int a[MAXN];
    int p[MAXN];
     
    int main() {
      cin.tie(0);
      ios_base::sync_with_stdio(0);
      cout<<fixed<<setprecision(10);
     
      cin>>n;
      rep(i,0,1<<n) cin>>a[i];
     
      if (n==1) {
        cout<<2<<endl;
        return 0;
      }
     
      int N=1<<n;
      rep(i,0,1<<n) p[N-1-a[i]]=i;
     
      i64 res=i64(N+1)*N/2;
      rep(i,0,N) {
        rep(j,i+1,N) if ((j-i+1)%4==0) {
          bool ok=true;
          rep(k,i,j+1) if (p[a[k]]<i || p[a[k]]>j) {
            ok=false;
            break;
          }
          if (ok) { res-=1; }
        }
      }
      cout<<res<<endl;
     
      return 0;
    }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...