mirror of
https://github.com/wczffl-503/OI-Codes.git
synced 2025-07-07 18:06:58 +08:00
Add FZOI Codes
This commit is contained in:
53
FZOI/地毯填补.cpp
Normal file
53
FZOI/地毯填补.cpp
Normal file
@ -0,0 +1,53 @@
|
||||
#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);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user