QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#77746 | #5509. Kooky Tic-Tac-Toe | XKError | WA | 2ms | 3520kb | C++ | 3.0kb | 2023-02-15 15:58:52 | 2023-02-15 15:58:55 |
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 (o == 75) {
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 (o == 75) {
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: 0
Wrong Answer
time: 2ms
memory: 3520kb
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:
NIE NIE NIE NIE
result:
wrong answer Jury claims solution exists, contestant claims it does not (test case 1)