AMIRIOX無暝 @ 2021-10-31 15:59:15
样例的输出可过(虽然不一样,但模拟了一下应该是可以过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;
}
by AMIRIOX無暝 @ 2021-10-31 16:02:02
开long long一样过不去(这个数据范围咋可能是爆int,我病急乱投医了属于是
by AMIRIOX無暝 @ 2021-10-31 16:27:59
过了。
题面有问题,讨论区