Submission #594338

#TimeUsernameProblemLanguageResultExecution timeMemory
594338FatihSolakThe Big Prize (IOI17_prize)C++17
0 / 100
113 ms5284 KiB
#include "prize.h" #include <bits/stdc++.h> #define N 200005 using namespace std; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); vector<int> rem[N]; vector<int> get(int x){ if(rem[x].size())return rem[x]; return rem[x] = ask(x); } const int block = 256; int find_best(int n){ int maxi = 0; while(maxi * maxi + 1 < n){ int point = rng()%n; maxi = max(maxi,get(point)[0] + get(point)[1]); } int p = 0; while(1){ int now = get(p)[0] + get(p)[1]; if(now != maxi){ if(now == 0){ return p; } } else{ int pos = p - get(p)[0]; int l = p,r= n-1; while(l < r){ int m = (l + r + 1)/2; int val = get(m)[0] + get(m)[1]; if(val != maxi || m - get(m)[0] != pos + (m-p)){ r = m-1; } else l = m; } p = l; } p++; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...