Submission #227463

#TimeUsernameProblemLanguageResultExecution timeMemory
227463PedroBigManThe Big Prize (IOI17_prize)C++14
90 / 100
109 ms2676 KiB
#include <iostream> #include <vector> #include <cmath> #include <algorithm> #include <string> #include <map> #include <unordered_map> #include <set> #include <unordered_set> #include <queue> #include <deque> #include <list> #include "prize.h" using namespace std; typedef int ll; typedef unsigned long long int ull; typedef long double ld; #define REP(i,a,b) for(ll i=(ll)a; i<(ll)b; i++) #define pb push_back #define mp make_pair #define pl pair<ll,ll> #define ff first #define ss second #define whole(x) x.begin(),x.end() #define DEBUG(i) cout<<"Pedro Is The Master "<<i<<endl #define INF 1000000000000LL ll insig; #define In(vecBRO, LENBRO) REP(IBRO,0,LENBRO) {cin>>insig; vecBRO.pb(insig);} void Out(vector<ll> x) {REP(i,0,x.size()) {cout<<x[i]<<" ";} cout<<endl;} int find_best(int n) { ll N=(ll) n; vector<pl> query; REP(i,0,N) {query.pb(mp(-1,-1));} vector<ll> spe; ll n_spe=0LL; REP(i,0,min(500,N)) { vector<int> q=ask(i); query[i]=mp(q[0],q[1]); n_spe=max(n_spe,q[0]+q[1]); } REP(i,0,min(500,N)) { if(query[i].ff+query[i].ss!=n_spe) {spe.pb(i);} } while((ll) spe.size()!=n_spe) { ll lo=0LL; if(spe.size()>0) {lo=spe[spe.size()-1]+1;} ll hi=N-1; while(lo<hi) { ll mid=(lo+hi)/2LL; if(query[mid].ff==-1) {vector<int> q=ask(mid); query[mid]=mp(q[0],q[1]);} if(query[mid].ff+query[mid].ss!=n_spe) {hi=mid; continue;} if(query[mid].ff>spe.size()) {hi=mid-1;} else {lo=mid+1;} } spe.pb(lo); } REP(i,0,spe.size()) { ll ind=spe[i]; if(query[ind].ff==-1) {vector<int> q=ask(ind); query[ind]=mp(q[0],q[1]);} if(query[ind].ff==0 && query[ind].ss==0) {return ind;} } return 0LL; }

Compilation message (stderr)

prize.cpp: In function 'int find_best(int)':
prize.cpp:56:29: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             if(query[mid].ff>spe.size()) {hi=mid-1;}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...