254092026-02-19 20:55:51CzDaniMúzeumi őrökcpp17Futási hiba 32/4030ms32000 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long

signed main() {
    int n, e, u;
    cin >> n >> e >> u;
    vector<int> dp(u+1, 1e16), ut(u+1);
    vector<pair<int, int>> v(n+1);
    vector<vector<pair<int, int>>> vp(u+1);
    for (int i = 1; i <= n; i++) {
        int a, b, c;
        cin >> a >> b >> c;
        if (b<e||a>u)continue;
        a=max(a,e);
        b=min(b,u);
        vp[a].push_back({i, c});
        v[i] = {a, b};
    }
    dp[e-1]=0;
    priority_queue<pair<int, int>> q;
    for (int i = e; i <= u; i++) {
        for (auto [a, b] : vp[i]) {
            q.push({-(dp[i-1]+b), a});
        }
        while (!q.empty()&&v[q.top().second].second<i)q.pop();
        if (!q.empty()) {
            dp[i]=-q.top().first;
            ut[i]=q.top().second;
        }
    }
    if (dp[u]>=1e15) {
        cout << -1;
        return 0;
    }
    vector<int> ansv;
    int x = ut[u];
    while (x!=0) {
        ansv.push_back(x);
        x=ut[v[x].first-1];
    }
    sort(ansv.begin(), ansv.end());
    cout << dp[u] << '\n';
    cout << ansv.size() << ' ';
    for (int y : ansv) cout << y << ' ';
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base32/40
1Elfogadva0/01ms316 KiB
2Elfogadva0/014ms2360 KiB
3Elfogadva1/11ms316 KiB
4Elfogadva3/31ms316 KiB
5Elfogadva2/21ms324 KiB
6Elfogadva2/21ms508 KiB
7Elfogadva2/21ms316 KiB
8Elfogadva2/21ms316 KiB
9Elfogadva2/21ms316 KiB
10Futási hiba0/225ms32000 KiB
11Futási hiba0/230ms32000 KiB
12Elfogadva2/21ms488 KiB
13Elfogadva2/26ms564 KiB
14Elfogadva3/314ms2816 KiB
15Elfogadva3/314ms2788 KiB
16Futási hiba0/230ms32000 KiB
17Futási hiba0/226ms32000 KiB
18Elfogadva2/21ms316 KiB
19Elfogadva2/22ms316 KiB
20Elfogadva2/21ms316 KiB
21Elfogadva2/21ms316 KiB