This commit is contained in:
2023-12-23 22:23:48 +08:00
commit 43ced8bd2a
58 changed files with 5702 additions and 0 deletions

58
ACMOJ-1741.cpp Normal file
View File

@ -0,0 +1,58 @@
#include <cstdio>
#include <cstring>
#include <vector>
using namespace std;
struct ElementType {
int r, c, p;
ElementType() {}
ElementType(int __r, int __c, int __p) : r(__r), c(__c), p(__p) {}
};
vector<ElementType> res;
void Calc(int R1, int R2, int C1, int C2, int pr, int pc) {
if (R1 == R2 && C1 == C2) return;
int MR = (R1 + R2) >> 1;
int MC = (C1 + C2) >> 1;
if (pr <= MR && pc <= MC) {
res.push_back(ElementType(MR + 1, MC + 1, 1));
Calc(R1, MR, C1, MC, pr, pc);
Calc(R1, MR, MC + 1, C2, MR, MC + 1);
Calc(MR + 1, R2, C1, MC, MR + 1, MC);
Calc(MR + 1, R2, MC + 1, C2, MR + 1, MC + 1);
return;
}
if (pr <= MR && pc > MC) {
res.push_back(ElementType(MR + 1, MC, 2));
Calc(R1, MR, C1, MC, MR, MC);
Calc(R1, MR, MC + 1, C2, pr, pc);
Calc(MR + 1, R2, C1, MC, MR + 1, MC);
Calc(MR + 1, R2, MC + 1, C2, MR + 1, MC + 1);
return;
}
if (pr > MR && pc <= MC) {
res.push_back(ElementType(MR, MC + 1, 3));
Calc(R1, MR, C1, MC, MR, MC);
Calc(R1, MR, MC + 1, C2, MR, MC + 1);
Calc(MR + 1, R2, C1, MC, pr, pc);
Calc(MR + 1, R2, MC + 1, C2, MR + 1, MC + 1);
return;
}
if (pr > MR && pc > MC) {
res.push_back(ElementType(MR, MC, 4));
Calc(R1, MR, C1, MC, MR, MC);
Calc(R1, MR, MC + 1, C2, MR, MC + 1);
Calc(MR + 1, R2, C1, MC, MR + 1, MC);
Calc(MR + 1, R2, MC + 1, C2, pr, pc);
return;
}
}
int main() {
#ifdef local
freopen("pro.in", "r", stdin);
#endif
int k, x, y;
scanf("%d%d%d", &k, &x, &y);
Calc(1, 1 << k, 1, 1 << k, x, y);
for (int i = 0; i < res.size(); i++)
printf("%d %d %d\n", res[i].r, res[i].c, res[i].p);
return 0;
}