Submission #1364414

#TimeUsernameProblemLanguageResultExecution timeMemory
1364414HasanV11010238Teleporter 2 (JOI26_teleporter)C++20
32 / 100
3598 ms1114112 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define INF 1000000000000000000
int main(){
    ll n, m, k, l, r, c;
    cin>>n>>m>>k;
    vector<vector<ll>> ra;
    for (int i = 1; i <= m; i++){
        cin>>l>>r>>c;
        ra.push_back({r, l, c, i});
    }
    ra.push_back({0, -1, 0, 0});
    m++;
    sort(ra.begin(), ra.end());
    vector<vector<int>> v(m + 1);
    for (int i = 0; i < m; i++){
        for (int j = i + 1; j < m; j++){
            if (ra[i][0] <= ra[j][1]) v[ra[i][3]].push_back(j);
        }
    }
    vector<vector<ll>> dp(m + 1, vector<ll>(k + 1, INF));
    dp[0][0] = 0;
    for (int i = 0; i < k; i++){
        for (auto el : ra){
            int ind = el[3];
            ll co = 0;
            for (auto val : v[ind]){
                dp[ra[val][3]][i + 1] = min(dp[ra[val][3]][i + 1], dp[ind][i] + co);
                co += ra[val][2];
            }
        }
    }
    ll ans = INF;
    for (int i = 0; i < m; i++){
        ll co = 0;
        for (auto val : v[i]){
            co += ra[val][2];
        }
        for (int j = 0; j <= k; j++){
            ans = min(ans, dp[i][j] + co);
        }
    }
    cout<<ans;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...