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 "grader.h"
#include <bits/stdc++.h>
using namespace std;
mt19937 rng(69420);
int HC(int N){
int l=1, r=N;
while (l<=r){
int mid=(l+r)>>1;
if (l==r) return mid;
int m1=(l+r)>>1, m2=(l+r+1)>>1;
if (m1==m2) --m1, ++m2;
Guess(m1);
int t=Guess(m2);
if (!t) return mid;
if (r-l+1<=3){
if (t==1) return r;
return l;
}
if (r-l+1==4){
if (t==1){
if (Guess(r)==1) return r;
return r-1;
}else{
if (Guess(l)==1) return l;
return l+1;
}
}
if (r-l+1==5){
if (t==1){
if (Guess(r)==1) return r;
return r-1;
}else{
Guess(l+1);
if (Guess(l)==1) return l;
return l+1;
}
}
if (r-l+1==6){
if (t==1){
t=Guess(r);
return r-1+t;
}else{
t=Guess(l+1);
if (t==0) return l+2;
if (t==-1) return l+3;
if (Guess(l)==1) return l;
return l+1;
}
}
if (t==1){
l=m2;
int t=Guess(r);
mid=(l+r)>>1;
if (!t) return mid;
if (t==1) l=mid+1;
else r=mid;
}else{
r=m2;
int t=-Guess(l);
mid=(l+r)>>1;
if (!t) return mid;
if (t==1) l=mid+1, r=m1;
else r=mid;
}
}
return -1;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |