致 王峻谦

熊恒锐 · 发布于 2025-08-02 · 浏览 362 回复 0
#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;
}

全部回复 共 0 条

还没有人回复。往下写第一条。

发表回复