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<bits/stdc++.h>
using namespace std;
#define ll long long
bool test(ll x,ll y)
{
string s;
printf("examine %lld %lld\n",x,y);
cin>>s;
return s=="true";
}
ll N,xo,yo;
ll M;
ll lo,ro,uo,to;
ll cx,cy;
ll l,r;
int main()
{
cin>>N>>xo>>yo;
ll jump=1;
while( xo+jump <= N and test(xo+jump,yo) )jump*=2;
l= xo+ jump/2;
r=min(xo+jump,N);
while(l<r)
{
ll mid=(l+r+1)/2;
if(test(mid,yo))
l=mid;
else
r=mid-1;
}
jump=1;
ro=l;
while( xo-jump >= 1 and test(xo-jump,yo) )jump*=2;
l=max(xo-jump,(ll)1);
r=xo-jump/2;
while(l<r)
{
ll mid=(l+r)/2;
if(test(mid,yo))
r=mid;
else
l=mid+1;
}
jump=1;
lo=l;
while( yo-jump >= 1 and test(xo,yo-jump) )jump*=2;
l=max(yo-jump,(ll)1);
r=yo-jump/2;
while(l<r)
{
ll mid=(l+r)/2;
if(test(xo,mid))
r=mid;
else
l=mid+1;
}
jump=1;
uo=l;
while( yo+jump <= N and test(xo,yo+jump) )jump*=2;
l= yo+ jump/2;
r=min(yo+jump,N);
while(l<r)
{
ll mid=(l+r+1)/2;
if(test(xo,mid))
l=mid;
else
r=mid-1;
}
jump=1;
to=l;
M=ro-lo+1;
cx=(lo+ro)/2;
cy=(uo+to)/2;
jump=1;
//cout<<cx<<" "<<cy<<"\n";
while( cx+ 2*M*jump <= N and cy+ 2*M*jump <= N and test(cx+2*M*jump,cy+ 2*M*jump) )
jump++;
cx=cx+2*M*(jump-1);
cy=cy+2*M*(jump-1);
jump=1;
while( cx+ M <= N and cy+M<=N and test(cx+M,cy+M) )
{
cx+=M;
cy+=M;
}
while( cy+ 2*M*jump <= N and test(cx,cy+2*M*jump) )
jump++;
cy=cy+2*M*(jump-1);
cx-=2*M;
cy-=2*M;
printf("solution %lld %lld",cx,cy);
}
# | 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... |
# | 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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |