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
AC × 2
AC × 20
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