178282025-09-18 00:00:36AncsaBenzinkút üzemeltetés (55)cpp17Elfogadva 55/553ms508 KiB
#include <bits/stdc++.h>
using namespace std;

struct kut{
  int km;
  int piz;
};
struct eredmeny{
  int mennyi=0;
  int honnan=-1;
};

/*
5 20
10 10
20 40
30 10
40 20
50 30

KI:
70
2 2 5
*/
/*
8 30
30 70
40 100
60 150
110 60
130 20
170 90
300 200
310 240

ki:
610
5 1 3 4 6 8
*/


int main() {
    int n,k;
    cin >> n >> k;
    vector<kut> a(n);
    for (int i = 0; i < n; i++)
        cin >> a.at(i).km >> a.at(i).piz;

    vector<eredmeny> e(n);


    int legjobb=0;
    for(int i=0;i<n;i++)
    {
        e.at(i).mennyi=a.at(i).piz;
        int j=0;
        while(j<i && a.at(i).km-a.at(j).km >= k)
        {
            if (e.at(i).mennyi<a.at(i).piz+e.at(j).mennyi)
            {
                e.at(i).mennyi=a.at(i).piz+e.at(j).mennyi;
                e.at(i).honnan=j;
            }
            j++;
        }
        if (e.at(legjobb).mennyi<e.at(i).mennyi)
            legjobb=i;
    }

    int ind=legjobb;
    cout<<e.at(ind).mennyi<<endl;
    vector<int>kutak;
    while(ind>=0 && e.at(ind).honnan!=-1)
    {
        kutak.push_back(ind);
        ind=e.at(ind).honnan;
    }
    kutak.push_back(ind);
    cout<<kutak.size()<<" ";
    for(int i=kutak.size()-1;i>=0;i--)
        cout<< kutak.at(i)+1<<" ";
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base55/55
1Elfogadva0/01ms316 KiB
2Elfogadva0/03ms316 KiB
3Elfogadva3/31ms316 KiB
4Elfogadva3/31ms316 KiB
5Elfogadva3/31ms316 KiB
6Elfogadva3/31ms500 KiB
7Elfogadva3/31ms316 KiB
8Elfogadva3/31ms316 KiB
9Elfogadva3/31ms320 KiB
10Elfogadva3/31ms508 KiB
11Elfogadva3/31ms508 KiB
12Elfogadva3/32ms316 KiB
13Elfogadva4/42ms316 KiB
14Elfogadva4/42ms316 KiB
15Elfogadva5/52ms416 KiB
16Elfogadva6/63ms328 KiB
17Elfogadva6/63ms316 KiB