제출 #199527

#제출 시각아이디문제언어결과실행 시간메모리
199527johutha동굴 (IOI13_cave)C++14
100 / 100
1229 ms640 KiB
#include "cave.h" #include <iostream> #include <vector> #include <set> using namespace std; void exploreCave(int n) { vector<int> defined(n, -1); vector<int> perm(n, -1); int mv = tryCombination(vector<int>(n, 0).data()); for (int i = 0; i < n; i++) { int left = n - i; int ft = 0; for (; left > 1;) { int op = left / 2; vector<int> q = defined; int nds = 0; for (int i = 0; i < n; i++) { if (q[i] == -1 && op > 0 && nds >= ft) { nds++; op--; q[i] = 1; } else if (q[i] == -1) { q[i] = 0; nds++; } } int res = tryCombination(q.data()); if ((res == i) == (mv == i)) { ft += left / 2; left = left - (left / 2); } else left /= 2; } for (int j = 0; j < n; j++) { if (defined[j] == -1 && ft == 0) { defined[j] = (mv == i); perm[j] = i; // cout << "Found " << i << ": Switch " << j << " on " << (mv == i) << "\n"; break; } if (defined[j] == -1) ft--; } vector<int> ov = defined; for (int i = 0; i < n; i++) if (ov[i] == -1) ov[i] = 0; mv = tryCombination(ov.data()); } answer(defined.data(), perm.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...