Submission #173654

#TimeUsernameProblemLanguageResultExecution timeMemory
173654lckcodeCave (IOI13_cave)C++14
100 / 100
1503 ms604 KiB
#include "cave.h" #include<bits/stdc++.h> using namespace std; bool done[5005]; int comb[5005]; int ans[5005], d[5005]; void exploreCave(int N) { int n = N; for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) comb[j] = ans[j]; for (int j = 0; j < n; ++j) if(!done[j]) comb[j] = 0; // for (int j = 0; j < n; ++j) cout << comb[j] << ' '; // cout << endl; int x = tryCombination(comb), st = 0; if (x == i) st = 1; int yo = n - i; int l = 1, r = yo; int res = 0; while (l <= r) { int m = (l + r) / 2; int cnt = 0; for (int j = 0; j < n; ++j) { if(done[j]) comb[j] = ans[j]; else comb[j] = 1 - st; } for (int j = 0; j < n && cnt < m; ++j) if (!done[j]) comb[j] = st, cnt++; if (tryCombination(comb) == i) l = m + 1; else r = m - 1, res = m; } // cout << x << " " << st << " " << res << endl; int cnt = 0; for (int j = 0; j < n && cnt < res; ++j) { if(!done[j]) { cnt++; if (cnt == res) { // cout << j << endl; ans[j] = st; done[j] = 1; d[j] = i; break; } } } } answer(ans, d); }
#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...