Submission #1335056

#TimeUsernameProblemLanguageResultExecution timeMemory
1335056boclobanchatAliens (IOI07_aliens)C++20
0 / 100
1 ms412 KiB
#include<bits/stdc++.h>
using namespace std;
int n;
bool ask(int x,int y)
{
	if(x<0||y<0||x>n||y>n) return false;
	cout<<"examine "<<x<<" "<<y<<endl;
	fflush(stdout);
	string res;
	cin>>res;
	return (res=="true");
}
void answer(int x,int y)
{
	cout<<"solution "<<x<<" "<<y<<endl;
	fflush(stdout);
}
int main()
{
	int x,y;
	cin>>n>>x>>y;
	int l=0,r=n-x,px=0,py=0,len=0;
	while(l<=r)
	{
		int mid=(l+r)/2;
		if(ask(x+mid,y)&&ask(x+mid*3/4,y)&&ask(x+mid/2,y)&&ask(x+mid/4,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/4)&&ask(x,y+mid/2)&&ask(x,y+mid/4)) 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,len=mid;
		else r=mid-1;
	}
	y-=len;
	l=0,r=min(n-y,x-1),len=0;
	while(l<=r)
	{
		int mid=(l+r)/2;
		if(ask(x-mid,y+mid)) l=mid+1,len=mid;
		else r=mid-1;
	}
	answer(x+len/2,y+len/2);
}
#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...