Submission #48274240
Source Code Expand
#include <bits/stdc++.h>
#include <atcoder/modint>
using namespace std;
#define rep(i, x) for(int i = 0; i < (x); i++)
using ll = long long;
using mint = atcoder::modint;
int main() {
int n, k, p;
cin >> n >> k >> p;
mint::set_mod(p);
// aの末尾より大きい要素,bの末尾より大きい要素,類似度
vector dp(k + 1, vector(n, vector(n, mint(0))));
vector ndp(k + 1, vector(n, vector(n, mint(0))));
rep(i, n) rep(j, n) dp[0][i][j] = 1;
vector ct(k + 1, vector(n + 1, vector(n + 1, mint(0))));
for(int t = 1; t < n; t++) {
rep(s, min(t, k) + 1) {
auto &tb = ct[s];
rep(i, n + 1 - t) {
rep(j, n + 1 - t) {
tb[i + 1][j + 1] =
tb[i][j + 1] + tb[i + 1][j] - tb[i][j] + dp[s][i][j];
}
}
}
auto get = [&](int id, int lx, int rx, int ly, int ry) -> mint {
if(lx >= rx or ly >= ry) return 0;
return ct[id][rx][ry] - ct[id][lx][ry] - ct[id][rx][ly] + ct[id][lx][ly];
};
rep(ns, min(t, k) + 1) {
rep(i, n - t) {
rep(j, n - t) {
ndp[ns][i][j] = get(ns, 0, i + 1, j + 1, n + 1 - t) + get(ns, i + 1, n + 1 - t, 0, j + 1) + (ns ? get(ns - 1, 0, i + 1, 0, j + 1) + get(ns - 1, i + 1, n + 1 - t, j + 1, n + 1 - t) : 0);
}
}
}
swap(dp, ndp);
}
cout << dp.back()[0][0].val() << endl;
}
Submission Info
| Submission Time |
|
| Task |
G - Similar Permutation |
| User |
nok0 |
| Language |
C++ 17 (gcc 12.2) |
| Score |
600 |
| Code Size |
1533 Byte |
| Status |
AC |
| Exec Time |
111 ms |
| Memory |
16040 KiB |
Judge Result
| Set Name |
Sample |
All |
| Score / Max Score |
0 / 0 |
600 / 600 |
| Status |
|
|
| Set Name |
Test Cases |
| Sample |
00_sample_01.txt, 00_sample_02.txt |
| All |
00_sample_01.txt, 00_sample_02.txt, 01_test_01.txt, 01_test_02.txt, 01_test_03.txt, 01_test_04.txt, 01_test_05.txt, 01_test_06.txt, 01_test_07.txt, 01_test_08.txt, 01_test_09.txt, 01_test_10.txt, 01_test_11.txt, 01_test_12.txt, 01_test_13.txt, 01_test_14.txt, 01_test_15.txt, 01_test_16.txt, 01_test_17.txt, 01_test_18.txt |
| Case Name |
Status |
Exec Time |
Memory |
| 00_sample_01.txt |
AC |
1 ms |
3468 KiB |
| 00_sample_02.txt |
AC |
7 ms |
4284 KiB |
| 01_test_01.txt |
AC |
1 ms |
3464 KiB |
| 01_test_02.txt |
AC |
1 ms |
3556 KiB |
| 01_test_03.txt |
AC |
3 ms |
3672 KiB |
| 01_test_04.txt |
AC |
111 ms |
16040 KiB |
| 01_test_05.txt |
AC |
101 ms |
9676 KiB |
| 01_test_06.txt |
AC |
3 ms |
4132 KiB |
| 01_test_07.txt |
AC |
1 ms |
3436 KiB |
| 01_test_08.txt |
AC |
11 ms |
4300 KiB |
| 01_test_09.txt |
AC |
8 ms |
3720 KiB |
| 01_test_10.txt |
AC |
63 ms |
7336 KiB |
| 01_test_11.txt |
AC |
74 ms |
12364 KiB |
| 01_test_12.txt |
AC |
14 ms |
3996 KiB |
| 01_test_13.txt |
AC |
77 ms |
7400 KiB |
| 01_test_14.txt |
AC |
77 ms |
12392 KiB |
| 01_test_15.txt |
AC |
14 ms |
3760 KiB |
| 01_test_16.txt |
AC |
89 ms |
11280 KiB |
| 01_test_17.txt |
AC |
96 ms |
12164 KiB |
| 01_test_18.txt |
AC |
82 ms |
12536 KiB |