Submission #112187

#TimeUsernameProblemLanguageResultExecution timeMemory
112187someone_aaThe Big Prize (IOI17_prize)C++17
20 / 100
70 ms712 KiB
#include "prize.h"
#include <bits/stdc++.h>

using namespace std;
const int maxn = 200100;

bool visited[maxn];

int find_best(int n) {
    mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

    srand(time(NULL));

    if(n <= 10000) {
        for(int i=1;i<=n;i++) {
            vector<int>v = ask(i);
            if(v[0] == v[1]) return i;
        }
    }

    int fst = 0, lst = n-1;
    for(int i=1;i<=4500;i++) {
        int x = uniform_int_distribution<int>(0, n-1)(rng);

        while(visited[x]) x = uniform_int_distribution<int>(0, n-1)(rng);

        visited[x] = true;

        vector<int>v = ask(x);

        if(v[0] == v[1] && v[0] == 0) return x;

        // looking for the last {0, 1}
        // looking for the first {1, 0}
        if(v[0] == 0) fst = max(fst, x);
        else if(v[1] == 0) lst = min(lst, x);
    }

    if(fst > lst) {
        while(true){
            int br=  0;
        }
    }

    for(int i=fst;i<=lst;i++) {
        vector<int>v = ask(i);
        if(v[0] == v[1] && v[0] == 0) return i;
    }

	return 0;
}

Compilation message (stderr)

prize.cpp: In function 'int find_best(int)':
prize.cpp:41:17: warning: unused variable 'br' [-Wunused-variable]
             int br=  0;
                 ^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...