Submission #371481

#TimeUsernameProblemLanguageResultExecution timeMemory
371481urd05The Big Prize (IOI17_prize)C++14
0 / 100
3063 ms1132 KiB
#include "prize.h"
#include <bits/stdc++.h>
using namespace std;

int save[200000];
int ret;

int f(int i) {
    if (save[i]!=-1) {
        return save[i];
    }
    vector<int> v=ask(i);
    if (v[0]==0&&v[1]==0) {
        ret=i;
    }
    return save[i]=v[1];
}

int find_best(int n) {
    ret=-1;
    int now=0;
    memset(save,-1,sizeof(save));
    if (f(now)==0) {
        return now;
    }
    while (1) {
        for(int i=13;i>=0;i--) {
            if (now+(1<<i)>=n) {
                continue;
            }
            if (f(now+(1<<i))==0) {
                now+=(1<<i);
                break;
            }
        }
        if (ret!=-1) {
            return ret;
        }
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...