답안 #431184

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
431184 2021-06-17T10:11:51 Z milleniumEeee Aliens (IOI07_aliens) C++17
0 / 100
5 ms 256 KB
#include <bits/stdc++.h>
#define fr first
#define sc second
#define pii pair<int, int>
#define pb push_back
#define szof(s) (int)s.size()
#define all(s) s.begin(), s.end()
#define int long long
template<class T>void chmax(T &a, T b){if (a < b)a = b;}
template<class T>void chmin(T &a, T b){if (b < a)a = b;}
using namespace std;

int n, x, y;

bool ask(int x, int y) {
	if (x >= 1 && x <= n && y >= 1 && y <= n) {
		cout << "examine " << x << " " << y << endl;
		string res;
		cin >> res;
		return res == "true";		
	} else {
		return false;
	}
}

int last_bit(int x) {
	for (int i = 63; i >= 0; i--) {
		if (x & (1ll << i)) {
			return i;
		}
	}
}

signed main() {
    cin >> n >> x >> y;
    int MIN_Y = -1;
    for (int add = 2; ; add *= 2) {
		if (!ask(x, y - add)) {
			int wy = y - add;
			for (int i = last_bit(add); i >= 0; i--) {
				if (!ask(x, wy + (1ll << i))) {
					wy += (1ll << i);
				}
			}
			MIN_Y = wy + 1;
			break;
		}
	}
    int MIN_X = -1;
	for (int add = 2; ; add *= 2) {
		if (!ask(x - add, y)) {
			int wx = x - add;
			for (int i = last_bit(add); i >= 0; i--) {
				if (!ask(wx + (1ll << i), y)) {
					wx += (1ll << i);
				}
			}
			MIN_X = wx + 1;
			break;
		}
	}
	int MAX_X = -1;
    for (int add = 2; ; add *= 2) {
		if (!ask(x + add, y)) { // white found
			int wx = x + add;
			for (int i = last_bit(add); i >= 0; i--) {
				if (!ask(wx - (1ll << i), y)) {
					wx -= (1ll << i);
				}
			}
			MAX_X = wx - 1;
			break;
		}
	}
	int cur_x = MIN_X;
	int cur_y = MIN_Y;
	int len = MAX_X - MIN_X + 1;
	while (ask(cur_x + len * 2, cur_y + len * 2)) {
		cur_x += len * 2;
		cur_y += len * 2;
	}
	while (ask(cur_x - len * 2, y)) {
		cur_x -= len * 2;
	}
	while (ask(cur_x, y - len * 2)) {
		cur_y -= len * 2;
	}
	cout << cur_x + 2 * len + len / 2 << " " << cur_y + 2 * len + len / 2 << endl;
}

Compilation message

aliens.cpp: In function 'long long int last_bit(long long int)':
aliens.cpp:32:1: warning: control reaches end of non-void function [-Wreturn-type]
   32 | }
      | ^
# 결과 실행 시간 메모리 Grader output
1 Runtime error 4 ms 200 KB Execution killed with signal 13
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 200 KB Unexpected end of file - int32 expected
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 200 KB Unexpected end of file - int32 expected
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 3 ms 200 KB Execution killed with signal 13
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 3 ms 200 KB Execution killed with signal 13
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 2 ms 256 KB Execution killed with signal 13
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 4 ms 256 KB Execution killed with signal 13
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 3 ms 200 KB Execution killed with signal 13
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 200 KB Expected int32, but "2599999994" found
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 5 ms 200 KB Execution killed with signal 13
2 Halted 0 ms 0 KB -