# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1107263 | jadai007 | Aliens (IOI07_aliens) | C++17 | 0 ms | 0 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<bits/stdc++.h>
using namespace std;
int n, xo, yo;
string ck;
bool check(int x, int y){
if(x < 1 || x > n || y < 1 || y > n) return false;
cout << "examine " << x << ' ' << y << endl;
cin >> ck;
if(ck == "false") return false;
return true;
}
int main(){
cin >> n >> xo >> yo;
int lx = xo, ly = yo, x, y;
for(int j = 0; j < 3; ++j){
for(int i = 31; i >= 0; --i){
x = lx - (1<<i), y = ly;
if(check(x, y)) lx = x, ly = y;
}
}
for(int j = 0; j < 3; ++j){
for(int i = 31; i >= 0; --i){
x = lx, y = ly = y - (1<<i);
if(check(x, y)) lx = x, ly = y;
}
}
for(int i = 31; i >= 0; --i){
x = lx - (1<<i), y = ly - (1<<i);
if(check(x, y)) lx = x, ly = y;
}
int rx = lx;
for(int i = 31; i >= 0; --i){
int cx = rx + (1<<i);
if(check(cx, ly)) rx = cx;
}
int m = 0;
x = lx, y = ly;
for (int i = 31; i >= 0; i--) {
if (check(x + (1<<i), y + (1<<i))), m += (1<<i), x += (1<<i), y += (1<<i);
}
cout << "solution " << lx + m/2 << " " << ly + m/2 << endl;
}