Submission

Status:

(PPPP)(TSS)(TSSS)(PPPPPPP)(PPPPPPP)(TSSSSSSSSSS)(TSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS)

Subtask/Task Score:

{9/9}{0/5}{0/6}{11/11}{14/14}{0/25}{0/30}

Score: 34

User: foldnut

Problemset: ผลึกเวลา (Crystal)

Language: cpp

Time: 2.090 second

Submitted On: 2025-11-10 09:51:41

#include <bits/stdc++.h>
using namespace std;

signed main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    
    int u, k, n;
    cin >> u >> k >> n;
    vector<tuple<int, int, int>> v(n);
    for(int i = 0;i<n;i++){
        auto &[t, p, w] = v[i];
        cin >> p >> w >> t;
    }
    sort(v.begin(), v.end());
    vector<int> dp(n);
    for(int i = 0;i<n;i++){
        dp[i] = 1;
        auto [t, p, w] = v[i];
        for(int j = 0;j<i;j++){
            auto [t1, p1, w1] = v[j];
            if(p > p1){
                if(w == w1){
                    dp[i] = max(dp[i], dp[j] + 1);
                }else{
                    dp[i] = max(dp[i], dp[j] + 1 - k);
                }
            }
        }
    }
    cout << *max_element(dp.begin(), dp.end());
}