# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
500905 | aymanrs | Cave (IOI13_cave) | C++14 | 0 ms | 0 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
int tryCombination(int S[]);//{
// cout << "--------------------------------\n";
// for(int i = 0;i < n;i++) cout << S[i] << '\n';
// cout << "--------------------------------\n";
// int r;
// cin >> r;
// return r;
// }
void answer(int S[], int D[]);//{
// for(int i = 0;i < n;i++) cout << S[i] << ' ' << D[i] << '\n';
// }
void exploreCave(int N){
int S[N] = {0}, D[N];
vector<int> s;
for(int i = 0;i < N;i++) s.push_back(i);
for(int i = 0;i < N;i++){
for(int j : s) S[j] = 0;
int l = 0, r = s.size()-1, m, b, g = tryCombination(S), f;
if(g == -1 || g>i) f = 0;
else {
for(int j : s) S[j] = 1;
f = 1;
}
while(l <= r){
m = (l+r)/2;
for(int j = l;j <= m;j++) S[s[j]] = 1^f;
g = tryCombination(S);
for(int j = l;j <= m;j++) S[s[j]] = f;
if(g != -1 && g <= i){
b = m;
r = m-1;
} else {
l = m+1;
}
}
D[s[b]] = i;
S[s[b]] = f;
s.erase(s.begin()+b);
}
answer(S, D);
}
// int main(){
// exploreCave(n);
// }