답안 #342364

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
342364 2021-01-02T01:04:48 Z sofapuden Aliens (IOI07_aliens) C++14
100 / 100
2 ms 492 KB
#include <bits/stdc++.h>

using namespace std;

int n, x, y, w1 = 0, h1 = 0, w2 = 0, h2 = 0, W = 0;

int main(){
	cin >> n >> x >> y;
	int l = 1, r = n/5+5;
	while(l <= r){
		int mid = (l+r)>>1;
		int cx = mid+x;
		if(cx > n){
			r = mid-1;
			continue;
		}
		cout << "examine " << cx << " " << y << endl;
		string an; cin >> an;
		if(an == "true"){
			l = mid+1;
			w1 = mid;
		}
		else{
			r = mid-1;
		}
	}
	l = 1, r = n/5+5;
	while(l <= r){
		int mid = (l+r)>>1;
		int cx = x-mid;
		if(cx <= 0){
			r = mid-1;
			continue;
		}
		cout << "examine " << cx << " " << y << endl;
		string an; cin >> an;
		if(an == "true"){
			l = mid+1;
			w2 = mid;
		}
		else{
			r = mid-1;
		}
	}
	l = 1, r = n/5+5;
	while(l <= r){
		int mid = (l+r)>>1;
		int cy = mid+y;
		if(cy > n){
			r = mid-1;
			continue;
		}
		cout << "examine " << x << " " << cy << endl;
		string an; cin >> an;
		if(an == "true"){
			l = mid+1;
			h1 = mid;
		}
		else{
			r = mid-1;
		}
	}
	l = 1, r = n/5+5;
	while(l <= r){
		int mid = (l+r)>>1;
		int cy = y-mid;
		if(cy <= 0){
			r = mid-1;
			continue;
		}
		cout << "examine " << x << " " << cy << endl;
		string an; cin >> an;
		if(an == "true"){
			l = mid+1;
			h2 = mid;
		}
		else{
			r = mid-1;
		}
	}
	x += (w1-w2)>>1;
	cout << "examine " << x << " " << y << endl;
	string an; cin >> an;
	if(an == "true"){
		if((w1+w2+1)%5){
			W = (w1+w2+1);
		}
		else{
			int cu = (w1+w2+1)/5;
			x+=cu;
			cout << "examine " << x << " " << y << endl;
			cin >> an;
			x-=cu;
			if(an == "true")W = cu*5;
			else W = cu;
		}
	}
	else{
		W = (w1+w2+1)/3;
		x-=W;
	}
	
	y += (h1-h2)>>1;
	cout << "examine " << x << " " << y << endl;
	cin >> an;
	if(an == "true"){
		if((h1+h2+1)%5){
			W = (h1+h2+1);
		}
		else{
			int cu = (h1+h2+1)/5;
			y+=cu;
			cout << "examine " << x << " " << y << endl;
			cin >> an;
			y-=cu;
			if(an == "true")W = cu*5;
			else W = cu;
		}
	}
	else{
		W = (h1+h2+1)/3;
		y-=W;
	}
	
	
	an = "true";
	while(an == "true"){
		x-=W*2;
		if(x <= 0)break;
		cout << "examine " << x << " " << y << endl;
		cin >> an;
	}
	x+=W*2;
	
	an = "true";
	while(an == "true"){
		y-=W*2;
		if(y <= 0)break;
		cout << "examine " << x << " " << y << endl;
		cin >> an;
	}
	y+=W;
	x-=W;
	if(!(x <= 0 || y <= 0)){
		cout << "examine " << x << " " << y << endl;
		cin >> an;
	}
	else an = "false";
	if(an == "false"){
		y+=W, x+=W;
	}
	cout << "solution " << x+2*W << " " << y+2*W << endl;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 1 ms 364 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 1 ms 364 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 1 ms 364 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 1 ms 364 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 1 ms 364 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 2 ms 364 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 1 ms 364 KB Output is correct
3 Correct 1 ms 364 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 1 ms 364 KB Output is correct
3 Correct 1 ms 364 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 492 KB Output is correct
2 Correct 2 ms 364 KB Output is correct
3 Correct 2 ms 364 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 2 ms 364 KB Output is correct
3 Correct 2 ms 364 KB Output is correct