제출 #1335077

#제출 시각아이디문제언어결과실행 시간메모리
1335077boclobanchatAliens (IOI07_aliens)C++20
30 / 100
2 ms416 KiB
#include<bits/stdc++.h>
using namespace std;
#define int long long
int n;
const bool GRADING=false;
int m,ansx,ansy;
bool ck[999][999];
bool ask(int x,int y)
{
	if(x<0||y<0||x>n||y>n) return false;
	cout<<"examine "<<x<<" "<<y<<endl;
	fflush(stdout);
	if(!GRADING)
	{
		string res;
		cin>>res;
		return (res=="true");
	}
	else return ck[x][y];
}
void answer(int x,int y)
{
	cout<<"solution "<<x<<" "<<y<<endl;
	fflush(stdout);
}
signed main()
{
	int x,y;
	cin>>n>>x>>y;
	if(GRADING)
	{
		cin>>m>>ansx>>ansy;
		for(int i=-2;i<=2;i++) for(int j=-2;j<=2;j++) if(((i+j)%2+2)%2==0)
			for(int k=ansx-m/2+m*i;k<=ansx+m/2+m*i;k++) for(int l=ansy-m/2+m*j;l<=ansy+m/2+m*j;l++)
				ck[k][l]=true;
	}
	int l=0,r=n-x,px=0,py=0,lx=0,rx=0;
	while(l<=r)
	{
		int mid=(l+r)/2;
		if(ask(x+mid,y)&&ask(x+mid/3,y)&&ask(x+mid/2,y)) l=mid+1,px=mid;
		else r=mid-1;
	}
	l=0,r=n-y;
	while(l<=r)
	{
		int mid=(l+r)/2;
		if(ask(x,y+mid)&&ask(x,y+mid/3)&&ask(x,y+mid/2)) l=mid+1,py=mid;
		else r=mid-1;
	}
	x+=px,y+=py;
	l=0,r=min(x-1,y-1);
	while(l<=r)
	{
		int mid=(l+r)/2;
		if(ask(x-mid,y-mid)) l=mid+1,lx=mid;
		else r=mid-1;
	}
	l=0,r=min(n-x,n-y);
	while(l<=r)
	{
		int mid=(l+r)/2;
		if(ask(x+mid,y+mid)) l=mid+1,rx=mid;
		else r=mid-1;
	}
	x+=rx,y-=lx;
	l=0,r=min(x-1,n-y);
	while(l<=r)
	{
		int mid=(l+r)/2;
		if(ask(x-mid,y+mid)) l=mid+1,rx=mid;
		else r=mid-1;
	}
	x=(x+x-rx)/2,y=(y+y+rx)/2;
	answer(x,y);
}
#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...