0pts求助 样例输出自己检查没问题
查看原帖
0pts求助 样例输出自己检查没问题
320697
AMIRIOX無暝楼主2021/10/31 15:59

样例的输出可过(虽然不一样,但模拟了一下应该是可以过spj的)

但就告诉我越界

https://www.luogu.com.cn/record/61421095

有没有大佬知道我忽略啥了啊呜呜

#include <iostream>

#include <cstdio>

#include <cmath>

using namespace std;
// #define   (printf("fuck execute here\n"));

bool cxkpr(int lx, int ly, int k1, int prx, int pry){

	int bc=pow(2,k1-1)-1;

	if(prx>=lx && prx<=lx+bc && pry>=ly && pry<=ly+bc) return true;

	else return false;

}

// int a[2048][2048];

void fill(int k, int px, int py, int prx, int pry) {

	if(k==0) return;
	int bc=pow(2,k-1);

	if(cxkpr(px,py,k,prx,pry)) {

 

		printf("%d %d %d\n", px+bc,py+bc , 1);

		fill(k-1, px, py, prx, pry);

		fill(k-1, px+bc, py+bc, px+bc, py+bc);

		fill(k-1, px, py+bc, px+bc-1, py+bc);

		fill(k-1, px+bc, py, px+bc, py+bc-1);	

	}else if(cxkpr(px+bc, py+bc, k, prx,pry)) {

 		//if(px==1 && py==1) { cout << k << endl; }
		printf("%d %d %d\n", px+bc-1,py+bc-1 , 4);

		fill(k-1, px, py, px+bc-1, py+bc-1);

		fill(k-1, px+bc, py+bc, prx, pry);

		fill(k-1, px, py+bc, px+bc-1, py+bc);

		fill(k-1, px+bc, py, px+bc, py+bc-1);	



	}else if(cxkpr(px+bc, py, k, prx, pry)) {	

 

		printf("%d %d %d\n", px+bc-1,py+bc , 2);

		fill(k-1, px, py, px+bc-1, py+bc-1);

		fill(k-1, px+bc, py+bc, px+bc, py+bc);

		fill(k-1, px, py+bc, px+bc-1, py+bc);

		fill(k-1, px+bc, py, prx, pry);

	}else if(cxkpr(px, py+bc, k, prx, pry)) {

 

		printf("%d %d %d\n", px+bc,py+bc-1 , 3);

		fill(k-1, px, py, px+bc-1, py+bc-1);

		fill(k-1, px+bc, py+bc, px+bc, py+bc);

		fill(k-1, px, py+bc, prx, pry);

		fill(k-1, px+bc, py, px+bc, py+bc-1);			

	}	

}

using namespace std;

int main() {

	int k, x, y;

	cin >> k >> x >> y;

	fill(k, 1, 1, x, y);

	return 0;

}


2021/10/31 15:59
加载中...