제출 #594347

#제출 시각아이디문제언어결과실행 시간메모리
594347FatihSolak커다란 상품 (IOI17_prize)C++17
0 / 100
83 ms5292 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){ if(n <= 5000){ for(int i = 0;i<n;i++){ if(get(i)[0] + get(i)[1] == 0){ return i; } } } int maxi = 0; while((long long)(n-maxi) * (n-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...