236352026-01-26 20:04:03KristófBenzinkút üzemeltetés (55)cpp17Hibás válasz 37/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];
        if(dp[i]<data[i].second)
            {
            dp[i]=data[i].second;
            path[i]={i};
            }
        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];
        }
    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
base37/55
1Hibás válasz0/01ms508 KiB
2Elfogadva0/03ms1588 KiB
3Elfogadva3/31ms492 KiB
4Elfogadva3/31ms316 KiB
5Hibás válasz0/31ms316 KiB
6Elfogadva3/31ms316 KiB
7Hibás válasz0/31ms316 KiB
8Elfogadva3/31ms316 KiB
9Elfogadva3/31ms508 KiB
10Elfogadva3/31ms316 KiB
11Elfogadva3/31ms508 KiB
12Elfogadva3/32ms684 KiB
13Elfogadva4/42ms820 KiB
14Elfogadva4/42ms820 KiB
15Elfogadva5/52ms1076 KiB
16Hibás válasz0/62ms1336 KiB
17Hibás válasz0/62ms1432 KiB