제출 #768818

#제출 시각아이디문제언어결과실행 시간메모리
768818LudisseyCave (IOI13_cave)C++14
13 / 100
216 ms432 KiB
#include "cave.h" #include <iostream> #include <string> #include <set> #include <map> #include <cstring> #include <unordered_map> #include <vector> #include <fstream> #include <bitset> #include <tuple> #include <cmath> #include <cstdint> #include <stack> #include <cassert> #include <cstdio> #include <queue> #include <iterator> #include <iomanip> #include <algorithm> #include <sstream> using namespace std; int S[100000] = {0}; int D[100000] = { 0 }; void exploreCave(int N) { int crack = 0; for (int i = 0; i < N; i++) { S[i] = 1; D[i] = i; } /* while (crack < N) { S[crack] = 1 - S[crack]; crack = tryCombination(S); if (crack == -1) break; }*/ vector<bool> visited(N); while (crack < N) { int l=0, r=N-1; for (int i = l; i <= r; i++) { if (!visited[i]) { S[i] = 0; } } while (l < r) { int mid = (l + r) / 2; for (int i = l; i <= r; i++) { if (!visited[i] && i>mid) { S[i] = 1; } else { S[i] = 0; } } int res = tryCombination(S); if (res > crack || res == -1) { r = mid; } else { for (int i = l; i <= mid; i++) { if (!visited[i]) S[i] = 1; } l = mid+1; } } S[l] = 0; visited[l] = true; D[l] = crack; crack++; } 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...