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: 17458

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

Language: cpp

Time: 2.090 second

Submitted On: 2025-05-27 20:37:56

#include <bits/stdc++.h>
using namespace std;
#define tiii tuple<int,int,int>

int dp[(int)1e5 + 5];
vector<tiii> vc;
int main() {
    ios_base::sync_with_stdio(0); cin.tie(0);
    int u, k, n; cin >> u >> k >> n;
    for (int i = 0;i < n;i++) {
        int p, w, t; cin >> p >> w >> t;
        vc.push_back({t, w, p});
    }
    sort(vc.begin(), vc.end());
    for (int i = 0;i < n;i++) {
        dp[i] = 1;
        int w1 = get<1>(vc[i]), p1 = get<2>(vc[i]);
        for (int j = 0;j < i;j++) {
            int w2 = get<1>(vc[j]), p2 = get<2>(vc[j]);
            if (w2 == w1 && p1 > p2) dp[i] = max(dp[i], dp[j] + 1);
            else if (w2 != w1 && p1 > p2) dp[i] = max(dp[i], dp[j] - k + 1);
        }
    }
    cout << *max_element(dp, dp + n);

    return 0;
}