致 王峻谦

熊恒锐  •  11天前


#include <bits/stdc++.h>
using namespace std;
int n, x, y;

void solve(int x1, int y1, int x2, int y2, int x, int y) {
	int l1 = (x1 + x2) / 2;
	int l2 = (y1 + y2) / 2;
	int lose;
	if (x <= l1 && y <= l2) {
		lose = 1;
		cout << l1 + 1 << " " << l2 + 1 << " 1" << endl;
	} else if (x > l1 && y <= l2) {
		lose = 3;
		cout << l1 << " " << l2 + 1 << " 3" << endl;
	} else if (x <= l1 && y > l2) {
		lose = 2;
		cout << l1 + 1 << " " << l2 << " 2" << endl;
	} else if (x > l1 && y > l2) {
		lose = 4;
		cout << l1 << " " << l2 << " 4" << endl;
	}
	if (x2 - x1 > 1) {
		if (lose == 1)
			solve(x1, y1, l1, l2, x, y);
		else
			solve(x1, y1, l1, l2, l1, l2);
		if (lose == 2)
			solve(x1, l2 + 1, l1, y2, x, y);
		else
			solve(x1, l2 + 1, l1, y2, l1, l2 + 1);
		if (lose == 3)
			solve(l1 + 1, y1, x2, l2, x, y);
		else
			solve(l1 + 1, y1, x2, l2, l1 + 1, l2);
		if (lose == 4)
			solve(l1 + 1, l2 + 1, x2, y2, x, y);
		else
			solve(l1 + 1, l2 + 1, x2, y2, l1 + 1, l2 + 1);
	}
}

int main() {
	cin >> n >> x >> y;
	solve(1, 1, 1 << n, 1 << n, x, y);


	return 0;
}


评论:

请先登录,才能进行评论