제출 #360235

#제출 시각아이디문제언어결과실행 시간메모리
360235jesus_coconut동굴 (IOI13_cave)C++17
100 / 100
1555 ms768 KiB
#include <bits/stdc++.h> #include "cave.h" using namespace std; int const MAXN = 5010; void exploreCave(int N) { bitset<MAXN> bio; int S[N], D[N], Q[N]; memset(S, 0, sizeof S); memset(D, 0, sizeof D); memset(Q, 0, sizeof Q); list<int> l; for (int i = 0; i < N; ++i) { l.push_back(i); } for (int i = 0; i < N; ++i) { int a = tryCombination(S); int state = 0; if (a != -1 && a == i) { state = 1; } int lo = 0, hi = N - i; while (lo < hi - 1) { int mid = (lo + hi) / 2; int cnt = 0; for (int j = 0; j < N; ++j) { if (bio[j]) Q[j] = S[j]; } for (auto j : l) { if (cnt >= lo && cnt < mid) Q[j] = state; else Q[j] = !state; ++cnt; } a = tryCombination(Q); if (a != -1 && a == i) { lo = mid; } else { hi = mid; } } auto it = l.begin(); advance(it, lo); S[*it] = state; D[*it] = i; bio[*it] = true; l.erase(it); } answer(S, 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...