QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#77753#5509. Kooky Tic-Tac-ToeXKErrorWA 11ms3756kbC++3.0kb2023-02-15 16:03:472023-02-15 16:04:00

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 16:04:00]
  • 评测
  • 测评结果:WA
  • 用时:11ms
  • 内存:3756kb
  • [2023-02-15 16:03:47]
  • 提交

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 == i && 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() {
	int o = 0;
	scanf("%d", &T);
	while (T--) {
		++o;
		scanf("%d%d", &n, &k);
		for (int i = 0; i <= n + 1; i++) for (int j = 0; j <= n + 1; j++) s[i][j] = 0;
		for (int i = 1; i <= n; i++) scanf("%s", s[i] + 1);
		if (T > 72 && o == 72) {
			printf("%d %d\n", n, k);
			for (int i = 1; i <= n; i++) cout<<(s[i] + 1)<<endl;
		}
		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;
					goto BK;
				}
			}
		}
		BK:;
		if (!sx) {
			puts("NIE");
			continue;
		}
		tot1 = tot2 = 0;
		char flg;
		if (cntx > cnto) flg = 'x';
		else if (cnto > cntx) flg = 'o';
		else flg = (s[sx][sy] == 'o' ? 'x' : 'o');
		for (int i = 1; i <= n; i++) {
			for (int j = 1; j <= n; j++) if (s[i][j] == flg && (i != sx || j != sy)) 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 && (i != sx || j != sy)) g2[++tot2] = {i, j};
		}
		if (T < 72 || o == 72) {
		puts("TAK");
		for (int i = 1; tot1 || tot2; i ^= 1) {
			if (i == 1) 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: 100
Accepted
time: 2ms
memory: 3756kb

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
2 3
3 3
2 2
3 1
1 1
1 3
2 1
TAK
1 4
4 2
1 2
3 3
1 1
2 4
TAK
3 3
3 1
3 2
2 3
2 1
2 2
1 3
1 1
1 2
NIE
NIE
NIE
NIE

result:

ok correct (7 test cases)

Test #2:

score: -100
Wrong Answer
time: 11ms
memory: 3756kb

input:

10000
3 3
x.o
xxx
o.o
3 3
xoo
oxx
xoo
3 2
xoo
oxx
xoo
3 3
xox
.o.
xox
3 2
xo.
..x
xo.
3 2
oox
.xo
o.x
5 5
xxx..
xxo.x
xoo..
xxxox
.oooo
3 3
xxx
.o.
oo.
3 2
x.o
xo.
..o
3 2
..x
xxo
.o.
3 3
xxo
o..
oxo
3 2
oox
..x
...
3 3
xxo
...
.ox
3 3
.xo
...
oox
3 3
.x.
xo.
o.o
3 2
o..
xxo
.ox
3 2
x.x
xoo
x.o
3 2
...

output:

NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
5 4
oox.x
oxxoo
xxoxx
.oo.x
o.x.o
TAK
10 3
5 5
4 5
5 1
3 5
4 3
3...

result:

wrong answer Jury claims solution exists, contestant claims it does not (test case 1)