Submission #362269

#TimeUsernameProblemLanguageResultExecution timeMemory
362269mosiashvililukaCheerleaders (info1cup20_cheerleaders)C++14
34 / 100
16 ms1516 KiB
#include<bits/stdc++.h> using namespace std; int a,b,c,d,e,i,j,ii,jj,zx,xc,f[1000009],pasii,pasjj,g[1000009],n,fen[1000009],ff[1000009]; long long pas,jm; void upd(int q){ while(q<=a+2){ fen[q]++; q=q+(q&(-q)); } } int read(int q){ int sm=0; while(q>=1){ sm+=fen[q]; q=q-(q&(-q)); } return sm; } int main(){ //freopen("magalitiinput.txt","r",stdin); ios_base::sync_with_stdio(false),cin.tie(0),cout.tie(0); cin>>n; a=1; for(i=1; i<=n; i++) a*=2; for(i=0; i<a; i++){ cin>>g[i]; f[i]=i; } if(n==0){ cout<<0<<endl; return 0; } pas=a;pas=pas*pas; pasii=-1;pasjj=-1; if(n>7){ for(ii=0; ii<n; ii++){ c=-1; if(ii!=0){ for(i=0; i<a; i++){ if(f[i]%2==0){ f[i]/=2; }else{ f[i]=f[i]/2+(1<<(n-1)); } } } for(i=0; i<a; i++){ if(c==-1){ c=(f[i]^g[i]); }else{ d=(f[i]^g[i]); if(c!=d) break; } } if(i==a){ pasii=ii;pasjj=c; break; } } //cout<<pasii<<" "<<pasjj<<endl; cout<<0<<endl; for(i=0; i<n; i++){ //c=n-1-i-pasii;if(c<0) c=n+c; c=n-1+i;if(c>=n) c-=n; c=c-pasii;if(c<0) c=n+c; //cout<<"kkk"<<c<<endl; if(((1<<c)&pasjj)==0){ }else{ cout<<1; } cout<<2; } for(i=0; i<pasii; i++) cout<<2; return 0; } pas=a;pas=pas*pas; pasii=-1;pasjj=-1; for(ii=0; ii<n; ii++){ c=-1; if(ii!=0){ for(i=0; i<a; i++){ if(f[i]%2==0){ f[i]/=2; }else{ f[i]=f[i]/2+(1<<(n-1)); } } } for(jj=0; jj<(1<<n); jj++){ for(i=0; i<a; i++) ff[i]=(g[(f[i]^jj)]); for(i=0; i<=a+2; i++) fen[i]=0; jm=0; for(i=a-1; i>=0; i--){ jm+=read(ff[i]+1); upd(ff[i]+1); } /*if(jm==0){ cout<<ii<<" lp "<<jj<<endl; for(i=0; i<a; i++) cout<<ff[i]<<" k "; cout<<endl; }*/ if(pas>jm){ pas=jm;pasii=ii;pasjj=jj; } } } //cout<<pasii<<" "<<pasjj<<endl; cout<<pas<<endl; for(i=0; i<n; i++){ c=n-1+i;if(c>=n) c-=n; c=c-pasii;if(c<0) c=n+c; if(((1<<c)&pasjj)==0){ }else{ cout<<1; } cout<<2; } for(i=0; i<pasii; i++) cout<<2; 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...