Submission #624943

#TimeUsernameProblemLanguageResultExecution timeMemory
624943Mr_HusanboyCave (IOI13_cave)C++14
100 / 100
288 ms460 KiB
#include "cave.h" #include <bits/stdc++.h> using namespace std; void exploreCave(int N) { int n = N; vector<int> done(N), ans(N), door(N); for(int i = 0; i < n; i ++){ int k = tryCombination(ans.data()); // cout << k << endl; if(k == i){ int l = 0, r = n - 1; while(l != r){ int m = (l+r)/2; for(int j = l; j <= m; j ++){ if(!done[j]) ans[j] = 1; } int tem = tryCombination(ans.data()); for(int j = l; j <= m; j ++){ if(!done[j]) ans[j] = 0; } if(tem == -1) tem = n; if(tem > i){ r = m; }else l = m + 1; } door[r] = i; done[r] = 1; ans[r] = 1; // cout << r << " r2" << endl; }else{ int l = 0, r = n - 1; while(l != r){ int m = (l+r)/2; for(int j = l; j <= m; j ++){ if(!done[j]) ans[j] = 1; } int tem = tryCombination(ans.data()); for(int j = l; j <= m; j ++){ if(!done[j]) ans[j] = 0; } if(tem == -1) tem = n; if(tem == i){ r = m; }else l = m + 1; } //cout << r << "r1 " << endl; door[r] = i; done[r] = 1; ans[r] = 0; //ans[r] = 0; cout << ans[r] << endl; } } // for(auto u : ans) cout << u << ' ' ; cout << endl; // for(auto u : door) cout << u << ' ' ; cout << endl; answer(ans.data(), door.data()); }
#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...