Submission #1365167

#TimeUsernameProblemLanguageResultExecution timeMemory
1365167gelastropodTeleporter 2 (JOI26_teleporter)C++20
32 / 100
3597 ms125356 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;

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 });
    }
    vals.push_back({ { -1, -1}, 0 });
    sort(vals.begin(), vals.end());
    vals.push_back({ { N, N}, 0 });
    mem.resize(M + 1, vector<int>(K + 2, -1));
    for (int i = M; i >= 0; i--) {
        for (int j = 0; j < K + 2; j++) {
            int crnt = 1e15, crntv = 0;
            for (int k = i + 1; k <= M; k++) {
                if (vals[k].first.second < vals[i].first.first) continue;
                crnt = min(crnt, (j ? mem[k][j - 1] : (int)(1e15)) + crntv);
                crntv += vals[k].second;
            }
            crnt = min(crnt, (j ? 0 : (int)(1e15)) + crntv);
            mem[i][j] = crnt;
        }
    }
    cout << mem[0][K + 1] << '\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...