제출 #937283

#제출 시각아이디문제언어결과실행 시간메모리
937283snpmrnhlol커다란 상품 (IOI17_prize)C++17
20 / 100
28 ms600 KiB
#include "prize.h" #include <bits/stdc++.h> using namespace std; const int K = 200; const int L = 5000; const int mod = 1e9 + 7; set <int> s; int cnt = 0; int mx = 0; int qcount = 0; int ans = -1; int seed = 17; int f(){ seed = 1ll*seed*seed%mod; return seed; } void solve(int l,int r,int dl,int dr){ if(dl + dr >= mx)return; if(l > r)return; int mij = (l + r)/2; for(int i = mij;i <= r;i++){ auto x = ask(i); if(x[0] + x[1] == mx){ x[0]-=dl; x[1]-=dr; solve(i + 1,r,x[0] + dl,dr); if(ans != -1)return; solve(l,mij - 1,dl,dr + x[1] + i - mij); return; }else{ if(x[0] + x[1] == 0){ ans = i; return; } } } solve(l,mij - 1,dl,dr); return; } int find_best(int n) { for(int i = 0;i < K;i++){ int id = f()%n; //cout<<id<<'\n'; auto x = ask(id); int nr = x[0] + x[1]; if(nr == 0)return id; if(nr > mx){ mx = nr; cnt = 1; }else if(nr == mx){ cnt++; } } solve(0,n - 1,0,0); return ans; } /** 8 3 3 3 3 2 2 2 1 **/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...