Submission #1365144

#TimeUsernameProblemLanguageResultExecution timeMemory
1365144gelastropodTeleporter 2 (JOI26_teleporter)C++20
0 / 100
0 ms344 KiB
#pragma GCC optimize("O3,inline")
#include <bits/stdc++.h>
using namespace std;
#define int long long

vector<pair<pair<int, int>, int>> vals;
vector<vector<int>> mem;

int dp(int m, int k) {
    if (k < 0) return 1e15;
    if (m == vals.size() - 1) return 0;
    if (mem[m][k] != -1) return mem[m][k];
    int crnt = 1e15, crntv = 0;
    for (int i = m + 1; i < vals.size(); i++) {
        if (vals[i].first.second < vals[m].first.first) continue;
        crnt = min(crnt, dp(i, k - 1) + crntv);
        crntv += vals[i].second;
    }
    return mem[m][k] = crnt;
}

signed main() {
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    int N, M, K, a, b, c; cin >> N >> M >> K;
    for (int i = 0; i < M; i++) {
        cin >> a >> b >> c; a--, b--;
        vals.push_back({ {b, a}, c });
    }
    sort(vals.begin(), vals.end());
    vals.push_back({ { N, N}, 0 });
    mem.resize(M, vector<int>(K + 1, -1));
    cout << dp(0, K) << '\n';
}
#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...