Submission #1155353

#TimeUsernameProblemLanguageResultExecution timeMemory
1155353onbertThe Big Prize (IOI17_prize)C++17
20 / 100
23 ms5376 KiB
#include <bits/stdc++.h> using namespace std; vector<int> ask(int i); const int maxn = 2e5 + 5; vector<int> ans[maxn]; vector<int> qry(int i) { if (ans[i].size() == 2) return ans[i]; else { return ans[i] = ask(i); } } int find_best(int n) { int mx = 0; for (int i=0;i<500;i++) { int val = qry(i)[0] + qry(i)[1]; if (val == 0) return i; mx = max(val, mx); } int cnt = 0, ans; for (int i=500;i<n;i++) { vector<int> vec = qry(i); if (vec[0] + vec[1] == 0) ans = i; if (vec[0] + vec[1] == mx) { int l = i, r = n-1; if (qry(i+1) == vec && i+2 < n && qry(i+2) == vec) { while (l < r) { int mid = (l+r+1)/2; if (qry(mid) == vec) l = mid; else r = mid-1; cnt++; } } i = l; } } assert(cnt <= 3000); return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...