【題解】Codeforces 463D. Gargari and Permutations

【題目敘述】https://codeforces.com/contest/463/problem/D

#include <iostream>
using namespace std;
 
int n, K, num, a[1005][5], b[1005], ans[1005], mx;
 
int main() {
    cin >> n >> K;
    for (int i = 1; i <= n; i++){
        cin >> b[i];
    }
    for (int i = 1; i < K; i++){
        for (int j = 1; j <= n; j++){
            cin >> num;
            a[num][i] = j;
        }
    }
    for (int i = 1; i <= n; i++){
        for (int j = 1; j < i; j++){
            bool flag = true;
            for (int k = 1; k < K; k++){
                if (a[b[i]][k] <= a[b[j]][k]) flag = false;
            }
            if (flag) ans[b[i]] = max(ans[b[i]], ans[b[j]]);
        }
        ans[b[i]]++;
        mx = max(mx, ans[b[i]]);
    }
    cout << mx << "\n";
}
分享本文 Share with friends