Submission #261619

#TimeUsernameProblemLanguageResultExecution timeMemory
261619sandovalCave (IOI13_cave)C++11
0 / 100
59 ms1180 KiB
#include <bits/stdc++.h> #include "cave.h" using namespace std; using ll = long long; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); inline int rnd() {return uniform_int_distribution<>(0,1)(rng);} constexpr int MAXN = 5002; int a[MAXN], comb[MAXN], ass[MAXN]; int ask(const vector<int>& p) { for (int i = 0; i < (int)p.size(); ++i) a[i] = p[i]; return tryCombination(a); } void solve(vector<int> v, vector<int>& sol) { if (v.empty()) return; int ans = ask(sol); if (ans == -1) return; vector<int> ri; for (auto x : v) { sol[x] ^= 1; int r = ask(sol); if (r == -1) return; if (r > ans) { // ultima puerta abierta. continue; } else if (r == ans) { // puerta a la derecha. ri.push_back(x); } else { sol[x] ^= 1; } } solve(ri, sol); } void exploreCave(int N) { vector<int> p(N), v; for (auto& x : p) x = rnd(); for (int i = 0; i < N; ++i) v.push_back(i); solve(v, p); //assert(ask(p) == -1); for (int i = 0; i < N; ++i) comb[i] = p[i]; for (int i = 0; i < N; ++i) { p[i] ^= 1; ass[i] = ask(p); p[i] ^= 1; } answer(comb, ass); }
#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...