Submission #371482

#TimeUsernameProblemLanguageResultExecution timeMemory
371482urd05The Big Prize (IOI17_prize)C++14
20 / 100
3048 ms1268 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[0];
}

int find_best(int n) {
    ret=-1;
    int now=0;
    memset(save,-1,sizeof(save));
    f(now);
    if (ret!=-1) {
        return ret;
    }
    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...