QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#77732#5509. Kooky Tic-Tac-ToeXKErrorWA 2ms3788kbC++2.7kb2023-02-15 15:41:392023-02-15 15:41:42

Judging History

你现在查看的是最新测评结果

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-02-15 15:41:42]
  • 评测
  • 测评结果:WA
  • 用时:2ms
  • 内存:3788kb
  • [2023-02-15 15:41:39]
  • 提交

answer

#include <bits/stdc++.h>

#define maxn 10

using namespace std;

int T;
int n, k;

char s[maxn][maxn];
int t[maxn][maxn];

int f[4][maxn][maxn];

bool check(int xi, int xj) {
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= n; j++) {
			if ((xi == j && xj == j) || s[i][j] == '.') {
				f[0][i][j] = f[1][i][j] = f[2][i][j] = f[3][i][j] = 0;
			}
			else if (s[i][j] == 'x') {
				f[0][i][j] = (s[i][j - 1] == 'x' ? f[0][i][j - 1] : 0) + 1;
				f[1][i][j] = (s[i - 1][j - 1] == 'x' ? f[1][i - 1][j - 1] : 0) + 1;
				f[2][i][j] = (s[i - 1][j] == 'x' ? f[2][i - 1][j] : 0) + 1;
				f[3][i][j] = (s[i - 1][j + 1] == 'x' ? f[3][i - 1][j + 1] : 0) + 1;
			}
			else if (s[i][j] == 'o') {
				f[0][i][j] = (s[i][j - 1] == 'o' ? f[0][i][j - 1] : 0) + 1;
				f[1][i][j] = (s[i - 1][j - 1] == 'o' ? f[1][i - 1][j - 1] : 0) + 1;
				f[2][i][j] = (s[i - 1][j] == 'o' ? f[2][i - 1][j] : 0) + 1;
				f[3][i][j] = (s[i - 1][j + 1] == 'o' ? f[3][i - 1][j + 1] : 0) + 1;
			}
//			cout<<f[0][i][j]<<" ";
			if (f[0][i][j] >= k || f[1][i][j] >= k || f[2][i][j] >= k || f[3][i][j] >= k) return 1;
		}
//		cout<<endl;
	}
	return 0;
}

int tot1;
pair<int, int> g1[maxn];
int tot2;
pair<int, int> g2[maxn];

int main() {
	scanf("%d", &T);
	while (T--) {
		scanf("%d%d", &n, &k);
		for (int i = 1; i <= n; i++) scanf("%s", s[i] + 1);
		int cntx = 0, cnto = 0;
		for (int i = 1; i <= n; i++) {
			for (int j = 1; j <= n; j++) {
				if (s[i][j] == 'x') ++cntx;
				if (s[i][j] == 'o') ++cnto;
			}
		}
		if (abs(cntx - cnto) > 1) {
			puts("NIE");
			continue;
		}
		if (cntx + cnto != n * n && !check(0, 0)) {
			puts("NIE");
			continue;
		}
		int sx = 0, sy = 0;
		for (int i = 1; i <= n; i++) {
			for (int j = 1; j <= n; j++) {
				if (!check(i, j)) {
//					cout<<"F:"<<i<<" "<<j<<endl;
					if (s[i][j] == 'x' && abs(cntx - 1 - cnto) > 1) continue;
					if (s[i][j] == 'o' && abs(cntx - cnto + 1) > 1) continue;
					sx = i, sy = j;
					t[i][j] = 1;
				}
			}
		}
		if (!sx) {
			puts("NIE");
			continue;
		}
		char flg;
		if (cntx > cnto) flg = 'x';
		else if (cnto < cntx) flg = 'o';
		else flg = (s[sx][sy] == 'x' ? 'o' : 'x');
		for (int i = 1; i <= n; i++) {
			for (int j = 1; j <= n; j++) if (s[i][j] == flg && !t[i][j]) g1[++tot1] = {i, j};
		}
		if (flg == 'o') flg = 'x';
		else flg = 'o';
		for (int i = 1; i <= n; i++) {
			for (int j = 1; j <= n; j++) if (s[i][j] == flg && !t[i][j]) g2[++tot2] = {i, j};
		}
		puts("TAK");
		while (tot1 || tot2) {
			if (tot1 >= tot2) printf("%d %d\n", g1[tot1].first, g1[tot1].second), --tot1;
			else printf("%d %d\n", g2[tot2].first, g2[tot2].second), --tot2;
		}
		printf("%d %d\n", sx, sy);
	}
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Wrong Answer
time: 2ms
memory: 3788kb

input:

7
3 3
x.o
xxx
o.o
4 3
xx.x
...o
..o.
.o..
3 3
xoo
oxx
xoo
3 2
xoo
oxx
xoo
3 3
xox
.o.
xox
3 2
xo.
..x
xo.
3 3
x..
.x.
..x

output:

TAK
3 3
2 3
3 1
2 1
1 3
2 2
TAK
1 4
4 2
1 2
2 4
4 4
TAK
3 1
2 3
3 3
NIE
NIE
NIE
NIE

result:

wrong output format Expected integer, but "TAK" found (test case 1)