# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
977065 | 2024-05-07T10:59:51 Z | Error404 | The Big Prize (IOI17_prize) | C++17 | 0 ms | 0 KB |
#include "prize.h" #include <bits/stdc++.h> using namespace std; #define pi pair<int,int> #define f first #define s second const int MAX = 2e5; int ans[MAX][2]; int a; pi query(int pos){ if(ans[pos][0]!=-1) return {ans[pos][0], ans[pos][1]}; int hold[2]; hold = ask(pos); ans[pos][0] = hold[0]; ans[pos][1] = hold[1]; if(hold[0]+hold[1]==0){ a = pos; } return {hold[0],hold[1]}; } int sum(int pos){ query(pos); return ans[pos][0]+ ans[pos][1]; } void solve(int l, int r){ if(a!=-1) return; if(l==r){ query(l); } while(sum(l)!= sum(r)){ if(sum(l)< sum(r)) l++; else r--; } if(ans[l][0]==ans[r][0]) return; int m = (l+r)/2; solve(l,m); solve(m,r); } int find_best( int n ) { for(int i = 0; i < n; i++){ ans[i][0]=-1; } a=-1; solve(0,n-1); return a; }