제출 #1162535

#제출 시각아이디문제언어결과실행 시간메모리
1162535cnn008Aliens (IOI07_aliens)C++20
0 / 100
0 ms432 KiB
#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;
		}
	}
	assert(ask(l1,r1));
	assert(ask(l1,r2));
	assert(ask(l2,r1));
	assert(ask(l2,r2));
	assert(l2-l1==r2-r1);
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...