QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#77753 | #5509. Kooky Tic-Tac-Toe | XKError | WA | 11ms | 3756kb | C++ | 3.0kb | 2023-02-15 16:03:47 | 2023-02-15 16:04:00 |
Judging History
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)