제출 #981376

#제출 시각아이디문제언어결과실행 시간메모리
981376vjudge1The Big Prize (IOI17_prize)C++17
20 / 100
29 ms600 KiB
#include "prize.h"
#include<bits/stdc++.h>
using namespace std;
int unloli,ans=-1;
void calc(int l,int r,int tol,int tor){
    if(ans>=0)
        return;
    if(l>r)
        return;
    if(tol+tor==unloli)
        return;
    int mid=l+r>>1,pt=mid;
    vector<int>stuff=ask(mid);
    if(stuff[0]+stuff[1]==0){
        ans=mid;
        return;
    }
    while(stuff[0]+stuff[1]-unloli&&pt>=l)
        if(stuff[0]+stuff[1]==0){
            ans=pt;
            return;
        } else
            stuff=ask(--pt);
    calc(l,pt-1,tol,stuff[1]);
    calc(mid+1,r,stuff[0],tor);
}
int find_best(int n) {
    if(n<5002) {
        for(int i = 1; i < n; i++) {
            std::vector<int> res = ask(i);
            if(res[0] + res[1] == 0)
                return i;
        }
	    return 0;
    }
    for(int i=0;i<min(500,n);i++){
        vector<int>x=ask(i);
        if(x[0]+x[1]==0)
            return i;
        unloli=max(unloli,x[0]+x[1]);
    }
    calc(0,n-1,0,0);
    return ans;
}

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

prize.cpp: In function 'void calc(int, int, int, int)':
prize.cpp:12:14: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   12 |     int mid=l+r>>1,pt=mid;
      |             ~^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...