QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#615491#9439. Aim Highucup-team5062#AC ✓0ms3868kbC++203.4kb2024-10-05 18:59:342024-10-05 18:59:35

Judging History

This is the latest submission verdict.

  • [2024-10-05 18:59:35]
  • Judged
  • Verdict: AC
  • Time: 0ms
  • Memory: 3868kb
  • [2024-10-05 18:59:34]
  • Submitted

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