제출 #986042

#제출 시각아이디문제언어결과실행 시간메모리
986042AlphaMale06커다란 상품 (IOI17_prize)C++17
20 / 100
46 ms600 KiB
#include <bits/stdc++.h>

#include "prize.h"

using namespace std;

//vector<int> ask(int i);

int find_best(int n){
	if(n<=5000){
        for(int i=0; i<n; i++){
            vector<int> ans = ask(i);
            if(ans[0]==0 && ans[1]==0)return i;
        }
	}
    int summ = 0;
    for(int i=0; i<460; i++){
        int ind = i;
        vector<int> ans = ask(ind);
        summ=max(summ, ans[0]+ans[1]);
        if(ans[0]==0 && ans[1]==0)return ind;
    }
    int prev=-1;
    for(int i=0; i<summ; i++){
        int l = prev+1, r = n-1;
        int best = n-1;
        while(l<=r){
            int s = l+r>>1;
            vector<int> ans = ask(s);
            if(ans[0]+ans[1]==0)return s;
            if(ans[0]+ans[1]==summ){
                if(ans[0]>i){
                    best=s-1;
                    r=s-1;
                }
                else l=s+1;
            }
            else{
                best = s;
                r=s-1;
            }
        }
        vector<int> ans = ask(best);
        if(ans[0]+ans[1]==0)return best;
    }
}

컴파일 시 표준 에러 (stderr) 메시지

prize.cpp: In function 'int find_best(int)':
prize.cpp:28:22: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   28 |             int s = l+r>>1;
      |                     ~^~
prize.cpp:46:1: warning: control reaches end of non-void function [-Wreturn-type]
   46 | }
      | ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...