何为问题0pts
查看原帖
何为问题0pts
416242
New_hope楼主2023/7/13 20:03
#include<bits/stdc++.h>
#define LL long long 
using namespace std;

int mp[1050][1050];
void F(LL l,LL x1,LL y1,LL nx,LL ny){
	if(l == 1){
		return;
	}
	l = l >> 1;
	if(nx-x1 < l){
		if(ny-y1 < l){
			cout << x1+l << " " << y1+l << " " << 1 << endl;
			F(l,x1,y1,nx,ny);//自己 
			F(l,x1,y1+l,x1+l-1,y1+l);//右上 
			F(l,x1+l,y1,x1+l,y1+l-1);//左下 
			F(l,x1+l,y1+l,y1+l,y1+l);//右下 
		}//左上 
		else{
			cout << x1+l << " " << y1+(l>>1)-1 << " " << 2 << endl;
			F(l,x1,y1,x1+l-1,y1+l-1);//左上 
			F(l,x1,y1+l,nx,ny); //自己 
			F(l,x1+l,y1,x1+l,y1+l-1);//左下 
			F(l,x1+l,y1+l,y1+l,y1+l);//右下 
		}//右上 
	}
	else{
		if(ny-y1 < l){
			cout << x1+l-1 << " " << y1+l << " " << 3 << endl;
			F(l,x1,y1,x1+l-1,y1+l-1); //左上 
			F(l,x1,y1+l,x1+l-1,y1+l);//右上 
			F(l,x1+l,y1,nx,ny);//自己 
			F(l,x1+l,y1+l,y1+l,y1+l);//右下 
		}//左下 
		else{
			cout << x1+l-1 << " " << y1+l-1 << " " << 4 << endl;
			F(l,x1,y1,x1+l-1,y1+l-1); //左上 
			F(l,x1,y1+l,x1+l-1,y1+l);//右上 
			F(l,x1+l,y1,x1+l,y1+l-1);//左下 
			F(l,x1+l,y1+l,nx,ny); //自己 
		}//右下 
	}
}
int main(){
	
	LL x,y,k,l;
	cin >> k >> x >> y;
	l=1<<k;
	F(l,1,1,x,y); //l->px,py;(i,j),(x,y)->一个正方形左上右下横纵坐标范围;nx,ny->特殊点位置 
	
	return 0;
}
//F(k,x1,y1,(x1+(1<<k))-1,(y1+(1<<k))-1,(x1+(1<<k))-1,(y1+(1<<k))-1);//左上 
//F(k,x1,y1+1<<k,(x1+(1<<k))-1,y2,(x1+(1<<k))-1,y1+(1<<k));//右上
//F(k,x1+(1<<k),y1,x2,(y1+(1<<k))-1,x1+(1<<k),(y1+(1<<k))-1);//左下 
//F(k,x1+(1<<k),y1+(1<<k),x2,y2,x1+(1<<k),y1+(1<<k));//右下
2023/7/13 20:03
加载中...