#include <bits/stdc++.h>
using namespace std;
#define int long long
int n,X0,Y0,_x,_y,cnt;
signed main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cin>>n>>X0>>Y0;
auto ask = [&](int x, int y)->bool{
cnt++;
assert(cnt<=300);
cout<<"examine "<<x<<" "<<y<<endl;
string s;
cin>>s;
if(s[0]=='t') return 1;
return 0;
};
int l1,r1,l2,r2;
_x=X0,_y=Y0;
for(int i=1; ; i*=2){
int y=min(n,Y0+i);
if(!ask(X0,y)){
int l=_y,r=y-1;
while(l<=r){
int mid=(l+r)>>1;
if(ask(X0,mid)){
r2=mid;
l=mid+1;
}else r=mid-1;
}
break;
}else{
if(y==n){
r2=n;
break;
}
_y=y;
}
}
_x=X0,_y=Y0;
for(int i=1; ; i*=2){
int x=min(n,X0+i);
if(!ask(x,Y0)){
int l=_x,r=x-1;
while(l<=r){
int mid=(l+r)>>1;
if(ask(mid,Y0)){
l2=mid;
l=mid+1;
}else r=mid-1;
}
break;
}else{
if(x==n){
l2=n;
break;
}
_x=X0;
}
}
_x=X0,_y=Y0;
for(int i=1; ; i*=2){
int y=max(1ll,Y0-i);
if(!ask(X0,y)){
int r=_y,l=y+1;
while(l<=r){
int mid=(l+r)>>1;
if(ask(X0,mid)){
r1=mid;
r=mid-1;
}else l=mid+1;
}
break;
}else{
if(y==1){
r1=1;
break;
}
_y=y;
}
}
_x=X0,_y=Y0;
for(int i=1; ; i*=2){
int x=max(1ll,X0-i);
if(!ask(x,Y0)){
int r=_x,l=x+1;
while(l<=r){
int mid=(l+r)>>1;
if(ask(mid,Y0)){
l1=mid;
r=mid-1;
}else l=mid+1;
}
break;
}else{
if(x==1){
l1=1;
break;
}
_x=x;
}
}
int m=r2-r1+1,cur=0;
assert(m&1);
int l=1,r=50000;
auto check = [&](int x, int y)->bool{
if(x<=0 || y<=0) return 0;
return ask(x,y);
};
// while(l<=r){
// int mid=(l+r)>>1;
// if(check(l1-mid*m,r1-mid*m)){
// cur=mid;
// l=mid+1;
// }else r=mid-1;
// }
// r1-=m*cur;
// l1-=m*cur;
// cur=0;
// l=1,r=50000;
// while(l<=r){
// int mid=(l+r)>>1;
// if(check(l1-2*mid*m,r1)){
// cur=mid;
// l=mid+1;
// }else r=mid-1;
// }
// l1-=2*cur*m;
// cur=0;
// l=1,r=50000;
// while(l<=r){
// int mid=(l+r)>>1;
// if(check(l1,r1-2*mid*m)){
// cur=mid;
// l=mid+1;
// }else r=mid-1;
// }
// r1-=2*cur*m;
assert(ask(l1,r1));
while(check(l1-m-m,r1)) l1-=m+m;
while(check(l1,r1-m-m)) r1-=m+m;
while(check(l1-m,r1-m)) l1-=m,r1-=m;
assert(ask(l1,r1));
l1+=(m-1)*m;
r1+=(m-1)*m;
l1+=m/2;
r1+=m/2;
assert(ask(l1,r1));
int v=(m-1)*m+m/2;
cout<<"solution "<<l1<<" "<<r1<<endl;
return 0;
}
# | 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... |