Submission #69458

#TimeUsernameProblemLanguageResultExecution timeMemory
69458DiuvenThe Big Prize (IOI17_prize)C++14
92.02 / 100
82 ms2364 KiB
#include "prize.h" #include <bits/stdc++.h> using namespace std; typedef vector<int> vi; const int MX=200010; bool up[MX]; int L[MX], R[MX], sum, n; void search(int s, int e){ if(s>e) return; int m=(s+e)/2; vi now=ask(m); L[m]=now[0], R[m]=now[1]; int lft=L[m]-(s==0 ? 0 : L[s-1]+up[s-1]); int rig=R[m]-(e==n-1 ? 0 : R[e+1]+up[e+1]); up[m] = L[m]+R[m]<sum; if(up[m] || lft>0) search(s,m-1); if(up[m] || rig>0) search(m+1,e); } int get(){ pair<int, int> ans={0,0}; for(int i=0; i<min(100, n); i++){ vi now=ask(i); ans=max(ans, {now[0]+now[1], i}); } sum=ans.first; return ans.second; } int find_best(int _n){ n=_n; int st=get(); search(0,n-1); for(int i=0; i<n; i++) if(up[i]){ vi now=ask(i); if(now[0]==0 && now[1]==0) return i; } assert(false); return 0; }

Compilation message (stderr)

prize.cpp: In function 'int find_best(int)':
prize.cpp:34:6: warning: unused variable 'st' [-Wunused-variable]
  int st=get();
      ^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...