Submission #283504

#TimeUsernameProblemLanguageResultExecution timeMemory
283504ShushCave (IOI13_cave)C++17
100 / 100
286 ms512 KiB
#include <bits/stdc++.h> #include "cave.h" using namespace std; int n, *s, *t, last; void flip(int start, int end){ for(int i = start; i <= end; i++){ if(t[i] != -1) continue; s[i] = 1 - s[i]; } } int bs(int j){ int lo = 0, hi = n - 1, mid, res = -1; while(lo <= hi){ mid = (lo + hi)/2; flip(mid, hi); int next = tryCombination(s); // cerr << mid << " " << hi << '\n'; // for(int i = 0; i < n; i++){ // cerr << s[i] << ' '; // } // cerr << '\n'; // cerr << " " << last << " " << next << '\n'; if(next != last && (next == j || last == j)){ lo = mid + 1; res = mid; } else { hi = mid - 1; } last = next; } return res; } void exploreCave(int N) { n = N; s = new int[n]; t = new int[n]; //Initializing for(int i = 0; i < n; i++){ t[i] = -1; s[i] = 0; } int j = 0; while(j < n){ last = tryCombination(s); int i = bs(j); t[i] = j; if(last == j) s[i] = 1 - s[i]; j++; } answer(s, t); }
#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...