제출 #552777

#제출 시각아이디문제언어결과실행 시간메모리
552777d4xnCave (IOI13_cave)C++17
0 / 100
248 ms368 KiB
#include "cave.h" #include <bits/stdc++.h> using namespace std; const int N = 5000; int n; int s[N]; int d[N]; vector<bool> vis; // switch que no puedo tocar int cnt; // numero de switchs que me quedan por tocar bool abierta; int find(int i) { // cual es el switch que corresponde a la puerta i // cambiar los mid primeros switchs // si la puerta cambia buscar en los que he cambiado // si no buscar en los que no he cambiado int l = 1; int r = cnt; abierta = tryCombination(s) > i; while (l < r) { int mid = cnt/2; int s2[N]; for (int j = 0; j < n; j++) { s2[i] = s[i]; } int temp = 1; for (int j = 0; j < n && temp < mid; j++) { if (vis[j]) continue; temp++; if (temp >= l) s2[j] = !s2[j]; } if (tryCombination(s2) > i) { if (!abierta) { r = mid; } else { l = mid+1; } } else { if (abierta) { r = mid; } else { l = mid+1; } } } return l; } void exploreCave(int nn) { n = nn; vis.resize(n, 0); cnt = n; for (int i = 0; i < n; i++) { int x = find(i); d[x] = i; if (!abierta) { s[x] = !s[x]; } vis[x] = 1; cnt--; } 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...