Submission #893131

#TimeUsernameProblemLanguageResultExecution timeMemory
893131vjudge1커다란 상품 (IOI17_prize)C++17
20 / 100
47 ms600 KiB
#include "prize.h"
#include <bits/stdc++.h>

using namespace std;

using vi = vector<int>;
using ii = pair<int, int>;

int sumv;

int find_best(int n) {
    mt19937 rng(1);
    for(int i = 0; i < 20; ++i) {
        int p = uniform_int_distribution<int>(0, n - 1)(rng);
        vi a = ask(p);
        sumv = max(sumv, a[0] + a[1]);
    }
    int p = -1, ulta0 = 0;
    int re = 0;
    while(p < n) {
        if(p != -1) {
            vi a = ask(p + 1);
            if(a[0] + a[1] == sumv) {
                ulta0 = a[0];
            } else {
                if(a[0] + a[1] == 0) return p + 1;
                ++p;
                continue;
            }
        }
        for(int step = 20; step >= 0; --step) {
            if(p + (1 << step) < n) {
                vi a = ask(p + (1 << step));
                if(a[0] + a[1] == sumv && a[0] == ulta0)
                    p += (1 << step);
            }
        }
        /// p + 1 e special
        vi a = ask(p + 1);
        if(a[0] + a[1] == 0) {
            return p + 1; 
        }
        ++p;
    }
    return 0;
}

Compilation message (stderr)

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