This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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 100000000000000000LL
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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |