mirror of
https://github.com/wczffl-503/OI-Codes.git
synced 2025-05-10 16:20:27 +08:00
53 lines
1.5 KiB
C++
53 lines
1.5 KiB
C++
#include <iostream>
|
|
#define int long long
|
|
using namespace std;
|
|
int kr, x, y;
|
|
void fenz(int wx, int wy, int a, int b, int k);
|
|
signed main()
|
|
{
|
|
cin >> kr >> x >> y;
|
|
fenz(1, 1, x, y, kr);
|
|
return 0;
|
|
}
|
|
void fenz(int wx, int wy, int a, int b, int k)
|
|
{
|
|
if (k == 0)
|
|
return;
|
|
int lsa = 2 << (k - 2);
|
|
if (k == 1)
|
|
lsa = 1;
|
|
int midx = wx + lsa;
|
|
int midy = wy + lsa;
|
|
if (a < midx && midy <= b)
|
|
{
|
|
printf("%d %d %d\n", midx, midy - 1, 1);
|
|
fenz(wx, wy, midx - 1, midy - 1, k - 1);
|
|
fenz(wx, midy, a, b, k - 1);
|
|
fenz(midx, wy, midx, midy - 1, k - 1);
|
|
fenz(midx, midy, midx, midy, k - 1);
|
|
}
|
|
else if (midx <= a && midy > b)
|
|
{
|
|
printf("%d %d %d\n", midx - 1, midy, 2);
|
|
fenz(wx, wy, midx - 1, midy - 1, k - 1);
|
|
fenz(wx, midy, midx - 1, midy, k - 1);
|
|
fenz(midx, wy, a, b, k - 1);
|
|
fenz(midx, midy, midx, midy, k - 1);
|
|
}
|
|
else if (a < midx && b < midy)
|
|
{
|
|
printf("%d %d %d\n", midx, midy, 3);
|
|
fenz(wx, wy, a, b, k - 1);
|
|
fenz(wx, midy, midx - 1, midy, k - 1);
|
|
fenz(midx, wy, midx, midy - 1, k - 1);
|
|
fenz(midx, midy, midx, midy, k - 1);
|
|
}
|
|
else if (midx <= a && midy <= b)
|
|
{
|
|
printf("%d %d %d\n", midx - 1, midy - 1, 4);
|
|
fenz(wx, wy, midx - 1, midy - 1, k - 1);
|
|
fenz(wx, midy, midx - 1, midy, k - 1);
|
|
fenz(midx, wy, midx, midy - 1, k - 1);
|
|
fenz(midx, midy, a, b, k - 1);
|
|
}
|
|
} |