# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1163812 | cnn008 | The Big Prize (IOI17_prize) | C++20 | 78 ms | 688 KiB |
#include "prize.h"
#include "bits/stdc++.h"
using namespace std;
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
int rand(int l, int r){
assert(l<=r);
return uniform_int_distribution<int> (l,r)(rng);
}
pair <int,int> mp[200005];
pair <int,int> get(int i){
if(mp[i].first || mp[i].second) return mp[i];
auto vi=ask(i);
pair <int,int> ans={vi[0],vi[1]};
return mp[i]=ans;
}
int find_best(int n) {
int mx=0;
for(int i=1; i<=20; i++){
int k=rand(0,n-1);
if(i==1) k=1;
auto [u,v]=get(k);
//if(!u and !v) return k;
mx=max(mx,u+v);
}
int L=0,R=n-1,kep=0;
for(int _=0; _<=10000; _++){
while(1){
auto [u,v]=get(L);
if(!u and !v) return L;
if(u+v==mx){
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |