222432026-01-14 18:28:11bombinigusiniBenzinkút üzemeltetés (55)cpp17Elfogadva 55/552ms508 KiB
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

struct piheno
{
    int tav, haszon, id;
};

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

    int N, K;
    cin>>N>>K;
    vector<piheno> p(N + 1);
    for (int i=1; i<=N; ++i)
    {
        cin >> p[i].tav>>p[i].haszon;
        p[i].id = i;
    }
    vector<long long> tempbest(N+1, 0);
    vector<bool> valaszt(N+1, false);
    vector<int> elozo_index(N+1, 0);

    for (int i=1; i<=N; ++i)
    {
        tempbest[i]=tempbest[i-1];
        valaszt[i]=false;
        int j=i-1;
        while (j>0 and p[i].tav-p[j].tav<K)
        {
            j--;
        }
        long long aktualis_haszon=p[i].haszon+tempbest[j];
        if (aktualis_haszon>tempbest[i])
        {
            tempbest[i]=aktualis_haszon;
            valaszt[i]=true;
            elozo_index[i]=j;
        }
    }
    cout<<tempbest[N]<<endl;
    vector<int> megoldas;
    int curr=N;
    while (curr>0)
    {
        if (valaszt[curr])
        {
            megoldas.push_back(p[curr].id);
            curr=elozo_index[curr];
        }
        else
        {
            curr--;
        }
    }
    reverse(megoldas.begin(), megoldas.end());
    cout<<megoldas.size();
    for (int sorszam:megoldas)
    {
        cout<<" "<<sorszam;
    }
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base55/55
1Elfogadva0/01ms332 KiB
2Elfogadva0/01ms316 KiB
3Elfogadva3/31ms316 KiB
4Elfogadva3/31ms508 KiB
5Elfogadva3/31ms344 KiB
6Elfogadva3/31ms508 KiB
7Elfogadva3/31ms316 KiB
8Elfogadva3/31ms316 KiB
9Elfogadva3/32ms316 KiB
10Elfogadva3/31ms316 KiB
11Elfogadva3/31ms316 KiB
12Elfogadva3/31ms316 KiB
13Elfogadva4/41ms508 KiB
14Elfogadva4/41ms316 KiB
15Elfogadva5/51ms316 KiB
16Elfogadva6/61ms500 KiB
17Elfogadva6/61ms500 KiB