Submission #167999

#TimeUsernameProblemLanguageResultExecution timeMemory
167999rzbtDojave (COCI17_dojave)C++14
14 / 140
1722 ms97756 KiB
#include <bits/stdc++.h> #define mp make_pair #define pb push_back #define F first #define S second #define all(x) x.begin(),x.end() #define MAXN 2000000 typedef long long ll; using namespace std; ll niz[MAXN]; ll m,n; ll nu,ve; ll bit[MAXN],dubina[MAXN]; ll nula=1,tksor,td; ll gde[MAXN]; ll r1,r2; map<ll,ll> mpa; void dodaj(ll p,ll x){ for(;p<MAXN;p+=(-p)&p) bit[p]+=x; } ll dobij(ll p){ ll z=0; for(;p>0;p-=(-p)&p) z+=bit[p]; return z; } ll res; int main() { srand(time(NULL)); scanf("%lld", &m); if(m==1){ printf("2"); return 0; } n=1<<m; res=n*(n+1)/2; for(ll i=1;i<=n;i++){ scanf("%lld",niz+i); } for(ll i=1;i<=n;i++){ gde[niz[i]]=i; if(!gde[n-niz[i]-1]){ r1=rand(); r2=rand(); bit[i]=r1 ^(r2<<16ll); }else bit[i]=(1ll<<34ll)-1-bit[gde[n-niz[i]-1]]; auto a=mpa.insert(mp(tksor,1)); if(!a.S)a.F->S++; tksor^=bit[i]; res-=mpa[tksor]; //printf(" %lld %lld %lld\n",i,td,n-niz[i]-1); } printf("%lld",res); return 0; }

Compilation message (stderr)

dojave.cpp: In function 'int main()':
dojave.cpp:35:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%lld", &m);
     ~~~~~^~~~~~~~~~~~
dojave.cpp:43:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%lld",niz+i);
         ~~~~~^~~~~~~~~~~~~~
#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...