제출 #937268

#제출 시각아이디문제언어결과실행 시간메모리
937268snpmrnhlol커다란 상품 (IOI17_prize)C++17
20 / 100
28 ms600 KiB
#include "prize.h" #include <bits/stdc++.h> using namespace std; const int K = 500; const int L = 5000; set <int> s; int mx = 0; int qcount = 0; int ans = -1; void solve(int l,int r,int dl,int dr){ //cout<<l<<' '<<r<<' '<<dl<<' '<<dr<<'\n'; 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); qcount++; if(qcount >= L)break; if(x[0] + x[1] == mx){ x[0]-=dl; x[1]-=dr; solve(i + 1,r,x[0] + dl,dr); if(ans == -1)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 < min(n,K);i++){ auto x = ask(i); qcount++; if(qcount >= L)break; int nr = x[0] + x[1]; if(nr == 0)return i; if(nr > mx){ mx = nr; } } 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...