제출 #235342

#제출 시각아이디문제언어결과실행 시간메모리
235342crossing0ver동굴 (IOI13_cave)C++17
25 / 100
293 ms640 KiB
#include<bits/stdc++.h> #include "cave.h" using namespace std; int n,type[5005],P[5000],oc[5000],C[5000]; int ask(int S[]) { int x = tryCombination(S); if (x == -1) x = n; return x; } void exploreCave(int N) { n = N; int A[N]; for (int i =0 ; i < n; i++) A[i] = 0; for (int pos = 0;pos < n; pos++) { int l = 0, r = n - 1; int x = ask(A); if (pos < x) type[pos] = 0,A[pos] = 0; else type[pos] = 1, A[pos] = 1; while (l != r) { int m = (l + r)/2; for (int i = l; i <= m; i++) if (!oc[i]) A[i]^=1; int x = ask(A); if (pos < x) { for (int i = l; i <= m; i++) if (!oc[i]) A[i]^=1; l = m + 1; } else {r = m; for (int i = l; i <= m; i++) if (!oc[i]) A[i]^=1; } } x = l; oc[x] = 1; C[x] = type[pos]; P[x] = pos; } int S[N],D[N]; for (int i = 0; i < n; i++) S[i] = C[i], D[i] = P[i]; 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...