1

Nicole · 发布于 2025-06-19 · 浏览 360 回复 0

include

using namespace std;

void solve(int l1, int r1, int l2, int r2, int x, int y) {

int m1 = (l1 + l2) / 2;
int m2 = (r1 + r2) / 2;
int lost;
if (x <= m1 && y <= m2) {
	cout << m1 + 1 << " " << m2 + 1 << " " << 1 << endl;
	lost = 1;
} else if (x > m1 && y <= m2) {
	cout << m1 << " " << m2 + 1 << " " << 3 << endl;
	lost = 3;
} else if (x <= m1 && y > m2) {
	cout << m1 + 1 << " " << m2 << " " << 2 << endl;
	lost = 2;
} else if (x > m1 && y <= m2) {
	cout << m1 << " " << m2 + 1 << " " << 3 << endl;
	lost = 3;
} else if (x <= m1 && y > m2) {
	cout << m1 + 1 << " " << m2 << " " << 2 << endl;
	lost = 2;
} else if (x > m1 && y > m2) {
	cout << m1 << " " << m2 << " " << 4 << endl;
	lost = 4;
}
if (l2 - l1 == 1)
	return;
if (lost == 1)
	solve(l1, r1, m1, m2, x, y);
else
	solve(l1, r1, m1, m2, m1, m2);
if (lost == 2)
	solve(l1, m2 + 1, m1, r2, x, y);
else
	solve(l1, m2 + 1, m1, r2, m1, m2 + 1);
if (lost == 3)
	solve(m1 + 1, r1, l2, m2, x, y);
else
	solve(m1 + 1, r1, l2, m2, m1 + 1, m2);
if (lost == 4)
	solve(m1 + 1,m2+1,l2, r2, x, y);
else
	solve(m1 + 1, m2 + 1, l2, r2, m1 + 1, m2 + 1);

}

int main() {

int n, x, y;
cin >> n >> x >> y;
solve(1, 1, 1 << n, 1 << n, x, y);
return 0;

}

全部回复 共 0 条

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

发表回复