defense @ 2020-08-27 21:45:12
蒟蒻爆零求助/dk
#include<bits/stdc++.h>
using namespace std;
#define MAX 1025
int k, x, y;
int mp[MAX][MAX];
int d1[5], d2[5];
bool vis[MAX][MAX];
void give(int xx, int yy){
d1[1] = xx; d2[1] = yy;
d1[2] = xx + 1; d2[2] = yy;
d1[3] = xx; d2[3] = yy - 1;
d1[4] = xx + 1; d2[4] = yy - 1;
}
void dg(int x1, int y1, int x2, int y2, int len){
int xx = (x1 + x2)/2, yy = (y1 + y2)/2;
give(xx, yy);
if(len == 0){
return;
}
len >>= 1;
dg(x1, y1, xx, yy, len); dg(xx, y1, x2, yy, len); dg(x1, yy, xx, y2, len); dg(xx, yy, x2, y2, len);
for(int i = 1; i <= 4; i++){
if(mp[d1[i]][d2[i]] != 0 ){
for(int j = 1; j <= 4; j++){
if(j == i) continue;
mp[d1[j]][d2[j]] = i;
}
printf("%d %d %d\n", d1[5 - i], d2[5 - i], i);
break;
}
}
return;
}
int main(){
scanf("%d%d%d",&k, &x, &y);
mp[x][y] = 1;
dg(0, 0, (1 << k), (1 << k), (1 << k));
return 0;
}