Submission #800187

#TimeUsernameProblemLanguageResultExecution timeMemory
800187LiudasThe Big Prize (IOI17_prize)C++17
20 / 100
59 ms344 KiB
#include <bits/stdc++.h>
#include "prize.h"
using namespace std;

int ans = -1, num;
void bin(int l, int r, int sl, int sr){
    for(int i = l; i <= r; i ++){
        int mid = (i + r) / 2;
        vector<int> k = ask(mid);
        //cout << "//" << mid <<  "  " << l << " " << r << " " << k[0] << " " << k[1] << " " << sl << " " << sr <<endl;
        if(k[0] + k[1] == 0){
            ans = mid;
            return;
        }
        if(num == k[0] + k[1]){
            if(k[0] - sl > 0)bin(l, mid - 1, sl, k[1]);
            if(k[1] - sr > 0)bin(mid + 1, r, k[0],sr);
            break;
        }
    }
}
int find_best(int N){
    int l = 0;
    vector<int> t = {0, 0};
    for(int i = 0; i < min(N, 500); i ++){
        auto k = ask(i);
        if(k[0] + k[1] > t[0] + t[1]){
            num = k[0] + k[1];
            t = k;
            l = i;
        }
        if(k[0] + k[1] == 0){
            return i;
        }
    }
    bin(l, N-1, l, 0);
    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...