| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1366119 | mariza | The Big Prize (IOI17_prize) | C++20 | 16 ms | 416 KiB |
#include "prize.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define MID ((l+r)/2)
int find_best(int n){
ll f=0, c=0, x=0, q=0;
for(ll i=0; i<500; i++){
// assert(q<10000);
// q++;
vector<int> ans=ask(i);
if(ans[0]==0 && ans[1]==0) return i;
else if(ans[0]+ans[1]>x){
f+=c;
c=0;
x=ans[0]+ans[1];
}
else if(ans[0]+ans[1]==x){
c++;
}
else{
f++;
}
}
assert(x<500);
ll y=500;
while(f<x){
ll l=y, r=n-1, idx;
while(l<=r){
assert(q<500+x*18);
q++;
vector<int> ans=ask(MID);
if(ans[0]==0 && ans[1]==0) return MID;
else if(ans[0]+ans[1]<x){
idx=MID;
r=MID-1;
}
else if(ans[0]>f) r=MID-1;
else l=MID+1;
}
f++;
y=idx+1;
}
}
Compilation message (stderr)
| # | Result | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Result | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
