Submission #804728

#TimeUsernameProblemLanguageResultExecution timeMemory
804728BenmathThe Big Prize (IOI17_prize)C++14
90 / 100
78 ms336 KiB
/******************************************************************************

                              Online C++ Compiler.
               Code, Compile, Run and Debug C++ program online.
Write your code in this editor and press "Run" button to compile and execute it.

*******************************************************************************/
#include "prize.h"
#include <bits/stdc++.h>

using namespace std;



int find_best(int n) {
    int maxi=0;
    if(n<10000){
        for(int i=0;i<=(n-1);i++){
            vector<int>res = ask(i);
            if((res[0]+res[1])==0){
                return i;
            }
        }
    }
    for(int i=0;i<600;i++){
        vector<int>res=ask(i);
        if((res[0]+res[1])==0){
            return i;
        }
        if((res[0]+res[1])>maxi){
            maxi=res[0]+res[1];
        }
    }
    int tren=-1;
    int left=0;
    vector<int>res=ask(0);
    if((res[0]+res[1])<maxi){
        tren=0;
        left++;
    }else{
        int ans=n;
        int l=0;
        int r=n-1;
        while(l<=r){
            int mid=(l+r)/2;
            vector<int>res=ask(mid);
            if((res[0]+res[1])==0){
                return mid;
            }
            if((res[0]+res[1])<maxi){
                ans=min(ans,mid);
                r=mid-1;
            }else{
                if(res[0]>left){
                    r=mid-1;
                }else{
                    l=mid+1;
                }
            }
        }
        tren=ans;
        left++;
    }
    int t1=0;
    while(t1==0){
        int ans=n;
        int l=tren+1;
        int r=n-1;
        while(l<=r){
            int mid=(l+r)/2;
            vector<int>res=ask(mid);
            if((res[0]+res[1])==0){
                return mid;
            }
            if((res[0]+res[1])<maxi){
                ans=min(ans,mid);
                r=mid-1;
            }else{
                if(res[0]>left){
                    r=mid-1;
                }else{
                    l=mid+1;
                }
            }
        }
        tren=ans;
        left++;
        
    }
}

Compilation message (stderr)

prize.cpp: In function 'int find_best(int)':
prize.cpp:36:25: warning: control reaches end of non-void function [-Wreturn-type]
   36 |     vector<int>res=ask(0);
      |                         ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...