Submission #526588

#TimeUsernameProblemLanguageResultExecution timeMemory
526588hibikiCave (IOI13_cave)C++11
0 / 100
367 ms460 KiB
#include "cave.h" #include<bits/stdc++.h> using namespace std; int ask[5050]; // idx=switch int open[5050]; // idx=door int link[5050]; // idx=door int alr[5050]; // idx=switch int ans[5050]; void exploreCave(int N) { int n=N; memset(alr,0,sizeof(alr)); memset(link,-1,sizeof(link)); memset(open,-1,sizeof(open)); for(int i=0;i<n;i++) { memset(ask,0,sizeof(ask)); // set to open all of previous door for(int j=0;j<i;j++) { ask[link[j]]=open[j]; } int ret=tryCombination(ask); if(ret==i) open[i]=1; else open[i]=0; int l=0,r=n-1-i; while(l<=r) { if(l==r) { link[i]=l; alr[l]=1; break; } int mid=(l+r)/2; int cnt=0; for(int j=0;j<n;j++) { if(alr[j])continue; if(j>=l&&j<=mid)ask[j]=open[i]; else ask[j]=(open[i]+1)%2; cnt++; } ret=tryCombination(ask); if(ret==i) { l=mid+1; } else { r=mid; } } } for(int i=0;i<n;i++) { ans[link[i]]=i; ask[link[i]]=open[i]; } answer(ask,ans); }
#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...