Submission #8560968
Source Code Expand
#include <cstdio>
#include <algorithm>
const int MN = 188;
int N, M, J;
char a[MN][MN];
int f[MN][MN][MN], g[MN][MN][MN];
int main() {
scanf("%d%d", &N, &M);
for (int i = 1; i <= N; ++i) scanf("%s", a[i] + 1);
int tN = N - 1, tM = M - 1;
while (tN) ++J, tN >>= 1;
while (tM) ++J, tM >>= 1;
for (int l = 1; l <= N; ++l)
for (int r = l; r <= N; ++r) {
f[l][r][M + 1] = M;
for (int j = M; j >= 1; --j) {
int o = l == r || (a[l][j] == a[r][j] && f[l][r - 1][j] >= j);
if (!o) f[l][r][j] = j - 1;
else f[l][r][j] = a[l][j] == a[l][j + 1] ? f[l][r][j + 1] : j;
}
}
for (int l = 1; l <= M; ++l)
for (int r = l; r <= M; ++r) {
g[l][r][N + 1] = N;
for (int i = N; i >= 1; --i) {
int o = l == r || (a[i][l] == a[i][r] && g[l][r - 1][i] >= i);
if (!o) g[l][r][i] = i - 1;
else g[l][r][i] = a[i][l] == a[i + 1][l] ? g[l][r][i + 1] : i;
}
}
if (f[1][N][1] == M) return puts("0"), 0;
for (int k = 1; k <= J; ++k) {
for (int l = 1; l <= N; ++l)
for (int r = l; r <= N; ++r)
for (int j = 1; j <= M; ++j)
f[l][r][j] = f[l][r][f[l][r][j] + 1];
for (int l = 1; l <= M; ++l)
for (int r = l; r <= M; ++r)
for (int i = 1; i <= N; ++i)
g[l][r][i] = g[l][r][g[l][r][i] + 1];
for (int i = 1; i <= N; ++i)
for (int j = 1; j <= M; ++j) {
static int A[MN], B[MN];
for (int z = i; z <= N; ++z) A[z] = f[i][z][j];
for (int z = j; z <= M; ++z) B[z] = g[j][z][i];
A[N + 1] = j - 1, B[M + 1] = i - 1;
for (int z = i; z <= N; ++z)
for (int w = A[z]; w > A[z + 1]; --w)
g[j][w][i] = std::max(g[j][w][i], z);
for (int z = j; z <= M; ++z)
for (int w = B[z]; w > B[z + 1]; --w)
f[i][w][j] = std::max(f[i][w][j], z);
}
if (f[1][N][1] == M) return printf("%d\n", k), 0;
}
return 0;
}
Submission Info
| Submission Time | |
|---|---|
| Task | D - Complexity |
| User | PinkRabbit |
| Language | C++14 (GCC 5.4.1) |
| Score | 1000 |
| Code Size | 1850 Byte |
| Status | AC |
| Exec Time | 692 ms |
| Memory | 51200 KiB |
Compile Error
./Main.cpp: In function ‘int main()’:
./Main.cpp:11:23: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d%d", &N, &M);
^
./Main.cpp:12:52: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
for (int i = 1; i <= N; ++i) scanf("%s", a[i] + 1);
^
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 1000 / 1000 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | sample01.txt, sample02.txt |
| All | sample01.txt, sample02.txt, in01.txt, in02.txt, in03.txt, in04.txt, in05.txt, in06.txt, in07.txt, in08.txt, in09.txt, in10.txt, in11.txt, in12.txt, in13.txt, in14.txt, in15.txt, in16.txt, in17.txt, in18.txt, in19.txt, in20.txt, in21.txt, in22.txt, in23.txt, in24.txt, in25.txt, in26.txt, in27.txt, in28.txt, in29.txt, in30.txt, in31.txt, in32.txt, in33.txt, in34.txt, in35.txt, in36.txt, in37.txt, in38.txt, sample01.txt, sample02.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| in01.txt | AC | 445 ms | 48896 KiB |
| in02.txt | AC | 543 ms | 49152 KiB |
| in03.txt | AC | 469 ms | 46848 KiB |
| in04.txt | AC | 541 ms | 49152 KiB |
| in05.txt | AC | 420 ms | 46848 KiB |
| in06.txt | AC | 486 ms | 49152 KiB |
| in07.txt | AC | 686 ms | 51200 KiB |
| in08.txt | AC | 692 ms | 51200 KiB |
| in09.txt | AC | 26 ms | 51200 KiB |
| in10.txt | AC | 1 ms | 2176 KiB |
| in11.txt | AC | 185 ms | 51200 KiB |
| in12.txt | AC | 220 ms | 51200 KiB |
| in13.txt | AC | 221 ms | 51200 KiB |
| in14.txt | AC | 257 ms | 51200 KiB |
| in15.txt | AC | 262 ms | 51200 KiB |
| in16.txt | AC | 265 ms | 51200 KiB |
| in17.txt | AC | 243 ms | 46976 KiB |
| in18.txt | AC | 184 ms | 42752 KiB |
| in19.txt | AC | 213 ms | 44672 KiB |
| in20.txt | AC | 170 ms | 42496 KiB |
| in21.txt | AC | 590 ms | 51200 KiB |
| in22.txt | AC | 26 ms | 51200 KiB |
| in23.txt | AC | 325 ms | 51200 KiB |
| in24.txt | AC | 535 ms | 51200 KiB |
| in25.txt | AC | 302 ms | 49024 KiB |
| in26.txt | AC | 482 ms | 51200 KiB |
| in27.txt | AC | 390 ms | 49152 KiB |
| in28.txt | AC | 442 ms | 51200 KiB |
| in29.txt | AC | 291 ms | 51200 KiB |
| in30.txt | AC | 288 ms | 51200 KiB |
| in31.txt | AC | 410 ms | 51200 KiB |
| in32.txt | AC | 411 ms | 51200 KiB |
| in33.txt | AC | 459 ms | 51200 KiB |
| in34.txt | AC | 458 ms | 51200 KiB |
| in35.txt | AC | 513 ms | 51200 KiB |
| in36.txt | AC | 515 ms | 51200 KiB |
| in37.txt | AC | 650 ms | 51200 KiB |
| in38.txt | AC | 642 ms | 51200 KiB |
| sample01.txt | AC | 1 ms | 2176 KiB |
| sample02.txt | AC | 1 ms | 4352 KiB |