Submission #1055385

#TimeUsernameProblemLanguageResultExecution timeMemory
1055385phoenixThe Big Prize (IOI17_prize)C++17
90 / 100
49 ms5600 KiB
#include "prize.h" #include <bits/stdc++.h> using namespace std; const int N = 200200; vector<int> arr[N]; vector<int> ASK(int p) { if (arr[p].empty()) arr[p] = ask(p); return arr[p]; } int sum(int i) { return ASK(i)[0] + ASK(i)[1]; } int find_best(int n) { int val = sum(0); for (int i = 0; i < min(n, 480); i++) { if (!sum(i)) return i; val = max(val, sum(i)); } int i = 480; while (i < n) { int x = sum(i); if (!x) return i; if (x < val) i++; else { int l = i, r = n; while (r - l > 1) { int m = (l + r) / 2; if (ASK(m) == ASK(l)) l = m; else { if (!sum(m)) return m; r = m; } } i = r; } } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...