Submission #68602708


Source Code Expand

#include<bits/stdc++.h>
using namespace std;
#define rep(i, s, t) for(int i = (s); i <= (t); i ++)
#define per(i, s, t) for(int i = (s); i >= (t); i --)
template<typename T, typename T2>
inline void chmin(T &x, T2 &&y) { x = min(x, y); }
template<typename T, typename T2>
inline void chmax(T &x, T2 &&y) { x = max(x, y); }
typedef long long ll;

const int N = 1e4 + 5;
int f[N][N], ok[N][N], n, k;

inline bool chk(int x, int y) { return (x - y) % n == 0; }

int sol(vector<int> v)
{
    if(v.size() == 1) return 0;
    // for(int i : v) cerr << i << " "; cerr << endl;
    int n = v.size();
    int ans = 0;
    rep(i, 0, n - 1) v.push_back(v[i]);
    rep(i, 0, n * 2) rep(j, 0, n * 2) f[i][j] = -1e9, ok[i][j] = 0;
    rep(i, 0, n * 2 - 2) f[i][i + 1] = chk(v[i], v[i + 1]), ok[i][i + n - 1] = 1;
    per(i, n - 1, 0)
    {
        vector<int> pos;
        rep(j, i + 1, n * 2 - 2)
        {
            for(int k : pos)
                chmax(f[i][j], f[i][k] + f[k][j]);
            ok[i][j] |= pos.size();
            chmax(f[i][j], f[i][j - 1] + chk(v[i], v[j]));
            chmax(f[i][j], f[i + 1][j] + chk(v[i], v[j]));
            // if(!ok[i][j])
            //     rep(k, i + 1, j - 1)
            //         chmax(f[i][j], f[i][k] + f[k][j]);
            if(chk(v[j], v[i])) pos.push_back(j);
        }
        pos = {};
        per(j, i - 1, 1)
        {
            for(int k : pos)
                chmax(f[j][i], f[j][k] + f[k][i]);
            ok[j][i] |= pos.size();
            if(chk(v[j], v[i])) pos.push_back(j);
        }
    }
    rep(i, 0, n - 1) chmax(ans, f[i][i + n - 1]);
    // cerr << ans << endl;
    return ans;
}

int a[N];
bool vis[N];

signed main()
{
    ios::sync_with_stdio(0);cin.tie(0);
    cin >> n >> k; rep(i, 1, n * k) cin >> a[i];
    int ans = 0;
    rep(i, 1, n * k) if(!vis[i])
    {
        vector<int> v;
        for(int j = i; !vis[j]; j = a[j]) v.push_back(j), vis[j] = 1;
        ans += sol(v);
    }
    cout << ans;

    return 0;
}

Submission Info

Submission Time
Task B - Sort Permutation
User adam01
Language C++ 20 (gcc 12.2)
Score 800
Code Size 2057 Byte
Status AC
Exec Time 1179 ms
Memory 785424 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 800 / 800
Status
AC × 3
AC × 53
Set Name Test Cases
Sample 01-sample-01.txt, 01-sample-02.txt, 01-sample-03.txt
All 01-sample-01.txt, 01-sample-02.txt, 01-sample-03.txt, 02-small-01.txt, 02-small-02.txt, 02-small-03.txt, 02-small-04.txt, 02-small-05.txt, 02-small-06.txt, 02-small-07.txt, 02-small-08.txt, 02-small-09.txt, 02-small-10.txt, 02-small-11.txt, 02-small-12.txt, 02-small-13.txt, 02-small-14.txt, 02-small-15.txt, 02-small-16.txt, 03-random-01.txt, 03-random-02.txt, 03-random-03.txt, 03-random-04.txt, 03-random-05.txt, 04-large-01.txt, 04-large-02.txt, 04-large-03.txt, 04-large-04.txt, 04-large-05.txt, 05-id-01.txt, 05-id-02.txt, 05-id-03.txt, 05-id-04.txt, 06-large-cycle-01.txt, 06-large-cycle-02.txt, 06-large-cycle-03.txt, 06-large-cycle-04.txt, 06-large-cycle-05.txt, 07-large-cycle-2-01.txt, 07-large-cycle-2-02.txt, 07-large-cycle-2-03.txt, 07-large-cycle-2-04.txt, 07-large-cycle-2-05.txt, 08-divide-01.txt, 08-divide-02.txt, 08-divide-03.txt, 08-divide-04.txt, 08-divide-05.txt, 09-large-ans-01.txt, 09-large-ans-02.txt, 09-large-ans-03.txt, 09-large-ans-04.txt, 09-large-ans-05.txt
Case Name Status Exec Time Memory
01-sample-01.txt AC 1 ms 3460 KiB
01-sample-02.txt AC 1 ms 3404 KiB
01-sample-03.txt AC 1 ms 3680 KiB
02-small-01.txt AC 1 ms 3432 KiB
02-small-02.txt AC 1 ms 3428 KiB
02-small-03.txt AC 1 ms 3484 KiB
02-small-04.txt AC 1 ms 3568 KiB
02-small-05.txt AC 1 ms 3548 KiB
02-small-06.txt AC 1 ms 3560 KiB
02-small-07.txt AC 1 ms 3596 KiB
02-small-08.txt AC 1 ms 3472 KiB
02-small-09.txt AC 1 ms 3452 KiB
02-small-10.txt AC 1 ms 3536 KiB
02-small-11.txt AC 1 ms 3648 KiB
02-small-12.txt AC 1 ms 3576 KiB
02-small-13.txt AC 1 ms 3536 KiB
02-small-14.txt AC 1 ms 3608 KiB
02-small-15.txt AC 1 ms 3588 KiB
02-small-16.txt AC 1 ms 3732 KiB
03-random-01.txt AC 116 ms 138252 KiB
03-random-02.txt AC 187 ms 188552 KiB
03-random-03.txt AC 2 ms 5224 KiB
03-random-04.txt AC 9 ms 17172 KiB
03-random-05.txt AC 63 ms 64292 KiB
04-large-01.txt AC 378 ms 304128 KiB
04-large-02.txt AC 131 ms 123448 KiB
04-large-03.txt AC 229 ms 185952 KiB
04-large-04.txt AC 333 ms 325192 KiB
04-large-05.txt AC 235 ms 182620 KiB
05-id-01.txt AC 1 ms 3536 KiB
05-id-02.txt AC 1 ms 3456 KiB
05-id-03.txt AC 1 ms 3604 KiB
05-id-04.txt AC 1 ms 3456 KiB
06-large-cycle-01.txt AC 1179 ms 785424 KiB
06-large-cycle-02.txt AC 926 ms 707296 KiB
06-large-cycle-03.txt AC 1099 ms 755504 KiB
06-large-cycle-04.txt AC 505 ms 445520 KiB
06-large-cycle-05.txt AC 1158 ms 774536 KiB
07-large-cycle-2-01.txt AC 227 ms 186876 KiB
07-large-cycle-2-02.txt AC 729 ms 590076 KiB
07-large-cycle-2-03.txt AC 985 ms 722668 KiB
07-large-cycle-2-04.txt AC 132 ms 129284 KiB
07-large-cycle-2-05.txt AC 789 ms 621956 KiB
08-divide-01.txt AC 3 ms 4820 KiB
08-divide-02.txt AC 15 ms 14144 KiB
08-divide-03.txt AC 3 ms 5172 KiB
08-divide-04.txt AC 4 ms 5644 KiB
08-divide-05.txt AC 3 ms 4904 KiB
09-large-ans-01.txt AC 439 ms 378208 KiB
09-large-ans-02.txt AC 147 ms 91924 KiB
09-large-ans-03.txt AC 576 ms 502636 KiB
09-large-ans-04.txt AC 251 ms 228804 KiB
09-large-ans-05.txt AC 147 ms 124436 KiB