178282025-09-18 00:00:36AncsaBenzinkút üzemeltetés (55)cpp17Accepted 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<<" ";
}
SubtaskSumTestVerdictTimeMemory
base55/55
1Accepted0/01ms316 KiB
2Accepted0/03ms316 KiB
3Accepted3/31ms316 KiB
4Accepted3/31ms316 KiB
5Accepted3/31ms316 KiB
6Accepted3/31ms500 KiB
7Accepted3/31ms316 KiB
8Accepted3/31ms316 KiB
9Accepted3/31ms320 KiB
10Accepted3/31ms508 KiB
11Accepted3/31ms508 KiB
12Accepted3/32ms316 KiB
13Accepted4/42ms316 KiB
14Accepted4/42ms316 KiB
15Accepted5/52ms416 KiB
16Accepted6/63ms328 KiB
17Accepted6/63ms316 KiB