This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "prize.h"
#include <vector>
using namespace std;
int nn, lolipop;
vector<int> get;
int ans = -1;
vector<pair<int, int> > inv;
void dnc(int cl, int cr){
if(ans != -1) return;
if(cl > cr) return;
int cm = (cl + cr) / 2;
get = ask(cm);
if(get[0] + get[1] != lolipop){
int lf = cm - 1, rg = cm + 1;
for(; lf >= cl; lf --){
get = ask(lf);
if(get[0] + get[1] == 0){
ans = lf;
break;
}
if(get[0] + get[1] == lolipop){
lf ++;
break;
}
}
if(lf < cl) lf = cl;
for(; rg <= cr; rg ++){
get = ask(rg);
if(get[0] + get[1] == 0){
ans = rg;
break;
}
if(get[0] + get[1] == lolipop){
rg --;
break;
}
}
if(rg > cr) rg = cr;
inv.push_back({lf, rg});
dnc(cl, lf - 1); dnc(rg + 1, cr);
}else{
dnc(cl, cm - 1);
dnc(cm + 1, cr);
}
return;
}
int find_best(int n){
nn = n;
lolipop = 0;
int lf = 0, rg;
for(rg = 0; rg < 474; rg ++){
get = ask(rg);
if(get[0] + get[1] == 0) return rg;
if(get[0] + get[1] > lolipop)
lolipop = get[0] + get[1];
}
dnc(0, n - 1);
if(ans != -1){
return ans;
}
for(auto i : inv){
for(int j = i.first; j <= i.second; j ++){
get = ask(j);
if(get[0] + get[1] == 0) return j;
}
}
return 0;
}
Compilation message (stderr)
prize.cpp: In function 'int find_best(int)':
prize.cpp:57:6: warning: unused variable 'lf' [-Wunused-variable]
57 | int lf = 0, rg;
| ^~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |