QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#615491 | #9439. Aim High | ucup-team5062# | AC ✓ | 0ms | 3868kb | C++20 | 3.4kb | 2024-10-05 18:59:34 | 2024-10-05 18:59:35 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
const int DEBUG = 1;
struct State {
int c[209][209];
};
vector<tuple<int, int, int, int, int, int>> Answer;
// ================================================================================== Debugger
void InitState(State &S) {
for (int i = 0; i <= 208; i++) {
for (int j = 0; j <= 208; j++) S.c[i][j] = (j <= 100 ? 1 : 0);
}
}
void PrintState(State S) {
for (int j = -10; j <= 10; j++) {
if (j == 1) cout << "---------------------" << endl;
for (int i = -10; i <= 10; i++) {
if (S.c[i + 100][j + 100] == 0) cout << ".";
else cout << S.c[i + 100][j + 100];
}
cout << endl;
}
}
void MoveState(State &S, int ax, int ay, int bx, int by, int cx, int cy) {
bool Error = false;
if (abs(ax - bx) + abs(ay - by) != 1) Error = true;
if (abs(cx - bx) + abs(cy - by) != 1) Error = true;
if (abs(ax - cx) + abs(ay - cy) != 2) Error = true;
if (S.c[ax + 100][ay + 100] == 0) Error = true;
if (S.c[bx + 100][by + 100] == 0) Error = true;
if (Error == true) {
cout << "Error: " << ax << " " << ay << " " << bx << " " << by << " " << cx << " " << cy << endl;
exit(0);
}
// Debug Mode
if (DEBUG == 1) {
S.c[ax + 100][ay + 100] -= 1;
S.c[bx + 100][by + 100] -= 1;
S.c[cx + 100][cy + 100] += 1;
}
Answer.push_back(make_tuple(ax, ay, bx, by, cx, cy));
}
// ================================================================================== Main Part
void Solve(int N) {
Answer.clear();
if (N >= 5) {
cout << "-1" << endl;
return;
}
// Stage 1. First Step
State S; InitState(S);
MoveState(S, -4, -3, -3, -3, -3, -2);
MoveState(S, -1, -3, -2, -3, -2, -2);
MoveState(S, +0, -3, +1, -3, +1, -2);
MoveState(S, +3, -3, +2, -3, +2, -2);
MoveState(S, -4, -2, -3, -2, -3, -1);
MoveState(S, -3, -2, -2, -2, -2, -1);
MoveState(S, -2, -2, -1, -2, -1, -1);
MoveState(S, +1, -2, +0, -2, +0, -1);
MoveState(S, +2, -2, +1, -2, +1, -1);
MoveState(S, +3, -2, +2, -2, +2, -1);
MoveState(S, -5, -0, -5, -1, -4, -1);
MoveState(S, +4, -0, +4, -1, +3, -1);
// Stage 2. Second Step
MoveState(S, -4, -1, -3, -1, -3, +0);
MoveState(S, -4, -1, -3, -1, -3, +0);
MoveState(S, -1, -1, -2, -1, -2, +0);
MoveState(S, -1, -1, -2, -1, -2, +0);
MoveState(S, +0, -1, +1, -1, +1, +0);
MoveState(S, +0, -1, +1, -1, +1, +0);
MoveState(S, +3, -1, +2, -1, +2, +0);
MoveState(S, +3, -1, +2, -1, +2, +0);
// Stage 3. Third Step
MoveState(S, -4, 0, -3, 0, -3, 1);
MoveState(S, -3, 0, -2, 0, -2, 1);
MoveState(S, -3, 0, -2, 0, -2, 1);
MoveState(S, -2, 0, -1, 0, -1, 1);
MoveState(S, +3, 0, +2, 0, +2, 1);
MoveState(S, +2, 0, +1, 0, +1, 1);
MoveState(S, +2, 0, +1, 0, +1, 1);
MoveState(S, +1, 0, +0, 0, +0, 1);
// Stage 4. Fourth Step
MoveState(S, -3, 1, -2, 1, -2, 2);
MoveState(S, -2, 1, -1, 1, -1, 2);
MoveState(S, +1, 1, +0, 1, +0, 2);
MoveState(S, +2, 1, +1, 1, +1, 2);
// Stage 5. Fifth Step
MoveState(S, -2, 2, -1, 2, -1, 3);
MoveState(S, +1, 2, +0, 2, +0, 3);
// Stage 6. Last Step
MoveState(S, -1, 3, +0, 3, +0, 4);
// Print
cout << Answer.size() << endl;
for (int i = 0; i < (int)Answer.size(); i++) {
cout << get<0>(Answer[i]) << " " << get<1>(Answer[i]) << " " << get<2>(Answer[i]) << " " << get<3>(Answer[i]) << " " << get<4>(Answer[i]) << " " << get<5>(Answer[i]) << endl;
}
}
int main() {
int T; cin >> T;
for (int t = 1; t <= T; t++) {
int N; cin >> N;
Solve(N);
}
return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 0ms
memory: 3868kb
input:
1 1
output:
35 -4 -3 -3 -3 -3 -2 -1 -3 -2 -3 -2 -2 0 -3 1 -3 1 -2 3 -3 2 -3 2 -2 -4 -2 -3 -2 -3 -1 -3 -2 -2 -2 -2 -1 -2 -2 -1 -2 -1 -1 1 -2 0 -2 0 -1 2 -2 1 -2 1 -1 3 -2 2 -2 2 -1 -5 0 -5 -1 -4 -1 4 0 4 -1 3 -1 -4 -1 -3 -1 -3 0 -4 -1 -3 -1 -3 0 -1 -1 -2 -1 -2 0 -1 -1 -2 -1 -2 0 0 -1 1 -1 1 0 0 -1 1 -1 1 0 3 -1 ...
result:
ok Output is valid. OK
Test #2:
score: 0
Accepted
time: 0ms
memory: 3824kb
input:
6 1 2 3 4 5 6
output:
35 -4 -3 -3 -3 -3 -2 -1 -3 -2 -3 -2 -2 0 -3 1 -3 1 -2 3 -3 2 -3 2 -2 -4 -2 -3 -2 -3 -1 -3 -2 -2 -2 -2 -1 -2 -2 -1 -2 -1 -1 1 -2 0 -2 0 -1 2 -2 1 -2 1 -1 3 -2 2 -2 2 -1 -5 0 -5 -1 -4 -1 4 0 4 -1 3 -1 -4 -1 -3 -1 -3 0 -4 -1 -3 -1 -3 0 -1 -1 -2 -1 -2 0 -1 -1 -2 -1 -2 0 0 -1 1 -1 1 0 0 -1 1 -1 1 0 3 -1 ...
result:
ok Output is valid. OK
Extra Test:
score: 0
Extra Test Passed