70pts求调
查看原帖
70pts求调
1557759
PangRuiLin楼主2025/6/28 09:50
#include <bits/stdc++.h>
using namespace std;
void f(int dx,int dy,int k,int x,int y){
	if(k==1){
		if(x==1){
			if(y==1){
				printf("%d %d %d\n",dx+2,dy+2,1);
			}else{
				printf("%d %d %d\n",dx+2,dy+1,2);
			}
		}else{
			if(y==1){
				printf("%d %d %d\n",dx+1,dy+2,3);
			}else{
				printf("%d %d %d\n",dx+1,dy+1,4);
			}
		}
		return;
	}
	int a=pow(2,k-1);
	if(x>a){
		if(y>a){
			printf("%d %d %d\n",dx+a,dy+a,4);
            f(dx+a,dy+a,k-1,x-a,y-a);
			f(dx+a,dy,k-1,1,a);
		}else{
			printf("%d %d %d\n",dx+a,dy+a+1,3);
            f(dx+a,dy,k-1,x-a,y);
			f(dx+a,dy+a,k-1,1,1);
		}
		f(dx,dy,k-1,a,a);
		f(dx,dy+a,k-1,a,1);
	}else{
		if(y<a){
			printf("%d %d %d\n",dx+a+1,dy+a+1,1);
            f(dx,dy,k-1,x,y);
			f(dx,dy+a,k-1,a,1);
		}else{
			printf("%d %d %d\n",dx+a+1,dy+a,2);
            f(dx,dy+a,k-1,x,y-a);
			f(dx,dy,k-1,a,a);
		}
		f(dx+a,dy,k-1,1,a);
		f(dx+a,dy+a,k-1,1,1);
	}
}
int main(){
	int k,x,y;
	cin>>k>>x>>y;
	f(0,0,k,x,y);
	return 0;
}

提交记录

2025/6/28 09:50
加载中...