Submission #289937

#TimeUsernameProblemLanguageResultExecution timeMemory
289937egekabasCave (IOI13_cave)C++14
100 / 100
370 ms760 KiB
#include "cave.h" #include <bits/stdc++.h> #define all(x) (x).begin(), (x).end() #define ff first #define ss second #define pb push_back #define mp make_pair using namespace std; typedef long long ll; typedef unsigned long long ull; typedef long double ld; typedef pair<ll, ll> pll; typedef pair<ull, ull> pull; typedef pair<int, int> pii; typedef pair<ld, ld> pld; int s[5009], d[5009]; int done[5009]; int fin = 0; int cur; int inf = 1e9; int binsearch(int l, int r){ if(l == r) return l; int m = (l+r)/2; for(int i = l; i <= m; ++i) if(done[i] == 0){ s[i] ^= 1; } int newcur = tryCombination(s); if(newcur == -1) newcur = inf; for(int i = l; i <= m; ++i) if(done[i] == 0) s[i] ^= 1; if(newcur != cur) return binsearch(l, m); else{ //cout << "HEY\n"; return binsearch(m+1, r); } } void exploreCave(int N) { cur = tryCombination(s); if(cur == -1) cur = inf; int cnt = N; while(cnt--){ int idx = binsearch(0, N-1); s[idx] ^= 1; done[idx] = 1; int newcur = tryCombination(s); if(newcur == -1) newcur = inf; if(newcur < cur){ s[idx] ^= 1; d[idx] = newcur; } else{ d[idx] = cur; cur = newcur; } } 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...