Submission #63699

#TimeUsernameProblemLanguageResultExecution timeMemory
63699MKopchevCave (IOI13_cave)C++14
12 / 100
1075 ms640 KiB
#include<bits/stdc++.h> #include "cave.h" const int nmax=5e3+42; int which[nmax]; int sign[nmax]; int now[nmax]; int active[nmax],sz=0; bool s[nmax]; void exploreCave(int N) { memset(which,-1,sizeof(which)); for(int i=0;i<N;i++)//find the i-th { sz=0; for(int j=0;j<N;j++) if(which[j]!=-1)now[which[j]]=sign[j]; for(int j=i;j<N;j++) { sz++; active[sz]=j; now[j]=0; } int ans=tryCombination(now); bool sign_now; //assert(ans==-1||ans>=i); if(ans==-1||ans>i)sign_now=0; else sign_now=1; while(sz>1) { int mx=sz/2,pos=1; for(int j=0;j<N;j++) if(which[j]!=-1)now[which[j]]=sign[j]; for(int j=i;j<N;j++) { if(pos<=mx&&active[pos]==j)now[j]=sign_now,pos++; else now[j]=!sign_now; } int ans=tryCombination(now); //assert(ans==-1||ans>=i); if(ans==-1||ans>i)sz=mx; else { for(int j=mx+1;j<=sz;j++) active[j-mx]=active[j]; sz=sz-mx; } } assert(s[active[1]]==0); s[active[0]]=1; sign[active[1]]=sign_now; which[active[1]]=i; } answer(sign,which); }
#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...