Submission #1199785

#TimeUsernameProblemLanguageResultExecution timeMemory
1199785JungPS동굴 (IOI13_cave)C++20
51 / 100
222 ms528 KiB
#include "cave.h" #include<iostream> using namespace std; int open[5007]; int sol[5007]; int n; void solve(int x){ //cout << "SOLVE " << x << endl; int l=0,r=n-1; int base[n]; int fn; int ans=0; for(int i=0;i<n;++i) base[i]=open[i]; for(int i=0;i<n;++i){ if(base[i]==-1) base[i]=1; } if(tryCombination(base)==-1 || tryCombination(base)>x) fn=1; else fn=0; //cout << "fn = " << tryCombination(base) << " " << fn << endl; while(l<=r){ for(int i=0;i<n;++i) base[i]=open[i]; int mid=(l+r)>>1; for(int i=0;i<=mid;++i){ if(base[i]==-1) base[i]=fn; } for(int i=mid;i<n;++i){ if(base[i]==-1) base[i]=1-fn; } //for(int i=0;i<n;++i) cout << base[i] << " "; //cout << " A " << mid << " " << tryCombination(base) << endl; if(tryCombination(base)>x || tryCombination(base)==-1){ ans=mid; r=mid-1; } else{ l=mid+1; } } open[ans]=fn; sol[ans]=x; //cout << ans << endl; } void exploreCave(int N) { n=N; for(int i=0;i<N;++i) open[i]=-1; for(int i=0;i<N;++i){ solve(i); } int a[n],b[n]; for(int i=0;i<n;++i) a[i]=open[i]; for(int i=0;i<n;++i) b[i]=sol[i]; answer(open,sol); }
#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...