Submission #600302

#TimeUsernameProblemLanguageResultExecution timeMemory
600302JomnoiThe Big Prize (IOI17_prize)C++17
90 / 100
89 ms5432 KiB
#include <bits/stdc++.h> #include "prize.h" using namespace std; const int MAX_N = 2e5 + 5; int l, r, mid; vector <int> result, result2; vector <int> A[MAX_N]; vector <int> query(int i) { if(!A[i].empty()) { return A[i]; } return A[i] = ask(i); } int find_best(int n) { int now = 0; for(int i = 0; i < min(n, 500); i++) { result = query(i); now = max(now, result[0] + result[1]); } for(int i = 0; i < n; i++) { result = query(i); if(result[0] + result[1] == 0) { return i; } if(result[0] + result[1] != now) { continue; } l = i, r = n - 1; while(l <= r) { mid = (l + r) / 2; result2 = query(mid); if(result == result2) { i = mid; l = mid + 1; } else { r = mid - 1; } } } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...