18952022-12-07 21:48:33sztomiMúzeumi őrökcpp17Időlimit túllépés 32/40699ms17308 KiB
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

const ll inf = 1e16;

int n, e, u;
vector<int> ar;
vector<int> kezd;
vector<int> veg;
vector<int> ind;
vector<pair<ll, vector<int>>> dp;
vector<bool> volt;

struct comp{
    bool operator()(int a, int b){
        if(kezd[a] < kezd[b]) return true;
        if(kezd[a] > kezd[b]) return false;
        return veg[a] < veg[b];
    }
};


int main()
{
    ios::sync_with_stdio(false);
    cin.tie(NULL);

    cin >> n >> e >> u;
    u -= e-1;
    ar.assign(n+1, 0);
    kezd.assign(n+1, 0);
    veg.assign(n+1, 0);
    ind.assign(n+1, 0);
    dp.resize(n+1);
    volt.assign(n+1, false);

    for(int i = 1; i <= n; i++){
        ind[i] = i;
        cin >> kezd[i] >> veg[i] >> ar[i];
        kezd[i] -= e-1;
        veg[i] -= e-1;
    }
    sort(ind.begin(), ind.end(), comp());

    pair<ll, vector<int>> ret, ideigl;
    for(int utolso = n; utolso >= 0; utolso--){
        if(veg[ind[utolso]] == u){
            ret = {0, vector<int>()};
        }
        else{
            ret = {inf, vector<int>()};
            for(int i = utolso+1; i <= n; i++){
                if(kezd[ind[i]] <= veg[ind[utolso]]+1){
                    ideigl = dp[i];
                    if(ideigl.first + ar[ind[i]] < ret.first){
                        ret.first = ideigl.first + ar[ind[i]];
                        ret.second = ideigl.second;
                        ret.second.push_back(ind[i]);
                    }
                }
            }
        }

        //cout << utolso << " " << ret.first << "\n";
        dp[utolso] = ret;
    }
    ret = dp[0];


    if(ret.first == inf){
        cout << "-1\n";
    }
    else{
        cout << ret.first << "\n";
        cout << ret.second.size() << " ";
        for(int i = ret.second.size()-1; i >= 0; i--){
            cout << ret.second[i] << " ";
        }
        cout << "\n";
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base32/40
1Elfogadva0/03ms1832 KiB
2Elfogadva0/0144ms17308 KiB
3Elfogadva1/12ms2292 KiB
4Elfogadva3/32ms2492 KiB
5Elfogadva2/22ms2628 KiB
6Elfogadva2/22ms2840 KiB
7Elfogadva2/22ms2920 KiB
8Elfogadva2/22ms2916 KiB
9Elfogadva2/23ms3056 KiB
10Időlimit túllépés0/2699ms7216 KiB
11Időlimit túllépés0/2657ms7444 KiB
12Elfogadva2/22ms3528 KiB
13Elfogadva2/224ms4668 KiB
14Elfogadva3/3109ms13560 KiB
15Elfogadva3/3140ms15088 KiB
16Időlimit túllépés0/2666ms8144 KiB
17Időlimit túllépés0/2665ms8124 KiB
18Elfogadva2/22ms4148 KiB
19Elfogadva2/22ms4148 KiB
20Elfogadva2/22ms4248 KiB
21Elfogadva2/22ms4268 KiB