236362026-01-26 20:06:51KristófBenzinkút üzemeltetés (55)cpp17Elfogadva 55/553ms1588 KiB
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main()
{
    int n,k;
    cin>>n>>k;
    vector<pair<int,int>> data(n);
    for(auto &x:data)cin>>x.first>>x.second;
    vector<int> dp(n+1);
    vector<vector<int>> path(n+1);
    path[0].push_back(0);
    dp[0]=data[0].second;
    for(int i=1;i<n;i++)
        {
        dp[i]=dp[i-1];
        int j=i-1;
        while(j>-1 && data[j].first+k>data[i].first)j--;
        if(j>=0)
            {
            if(dp[i]<dp[j]+data[i].second)
                {
                dp[i]=dp[j]+data[i].second;
                path[i]=path[j];
                path[i].push_back(i);
                }
            else path[i]=path[i-1];
            }
        else path[i]=path[i-1];
        if(dp[i]<data[i].second)
            {
            dp[i]=data[i].second;
            path[i]={i};
            }
        }
    cout<<dp[n-1]<<"\n";
    cout<<path[n-1].size();
    for(int x:path[n-1])cout<<" "<<x+1;
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base55/55
1Elfogadva0/01ms316 KiB
2Elfogadva0/03ms1588 KiB
3Elfogadva3/31ms316 KiB
4Elfogadva3/31ms500 KiB
5Elfogadva3/31ms316 KiB
6Elfogadva3/31ms316 KiB
7Elfogadva3/31ms508 KiB
8Elfogadva3/31ms316 KiB
9Elfogadva3/31ms316 KiB
10Elfogadva3/31ms316 KiB
11Elfogadva3/31ms560 KiB
12Elfogadva3/31ms564 KiB
13Elfogadva4/42ms820 KiB
14Elfogadva4/42ms820 KiB
15Elfogadva5/52ms1100 KiB
16Elfogadva6/62ms1384 KiB
17Elfogadva6/62ms1332 KiB