Submission #427978

#TimeUsernameProblemLanguageResultExecution timeMemory
427978MOUF_MAHMALATThe Big Prize (IOI17_prize)C++14
94.32 / 100
92 ms5308 KiB
#include "prize.h"
#include<bits/stdc++.h>
using namespace std;
typedef int ll;
ll id,l,r,m,x,mx;
vector<ll>v[200009];
int find_best(int n)
{
    for(ll i=0;i<min(n,480);i++)
    {
        v[i]=ask(i);
        if(v[i][0]+v[i][1]==0)
            return i;
        mx=max(mx,v[i][0]+v[i][1]);
    }
    id=480;
    while(id<n)
    {
        if(v[id].empty())
            v[id]=ask(id);
        if(v[id][0]+v[id][1]==0)
            return id;
        if(mx>v[id][0]+v[id][1])
        {
            id++;
            continue;
        }
        x=min(n-1,id+499);
        if(v[x].empty())
            v[x]=ask(x);
        if(v[x][0]+v[x][1]==0)
            return x;
        if(v[x]==v[id])
        {
            id=x+1;
            continue;
        }
        l=id,r=x+1;
        while(r-l>1)
        {
            m=(l+r)/2;
            if(v[m].empty())
                v[m]=ask(m);
            if(v[m][0]+v[m][1]==0)
                return m;
            if(v[m]==v[id])
                l=m;
            else
                r=m;
        }
        id=l+1;
    }
}

Compilation message (stderr)

prize.cpp: In function 'int find_best(int)':
prize.cpp:53:1: warning: control reaches end of non-void function [-Wreturn-type]
   53 | }
      | ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...