236352026-01-26 20:04:03KristófBenzinkút üzemeltetés (55)cpp17Wrong answer 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;
}
SubtaskSumTestVerdictTimeMemory
base37/55
1Wrong answer0/01ms508 KiB
2Accepted0/03ms1588 KiB
3Accepted3/31ms492 KiB
4Accepted3/31ms316 KiB
5Wrong answer0/31ms316 KiB
6Accepted3/31ms316 KiB
7Wrong answer0/31ms316 KiB
8Accepted3/31ms316 KiB
9Accepted3/31ms508 KiB
10Accepted3/31ms316 KiB
11Accepted3/31ms508 KiB
12Accepted3/32ms684 KiB
13Accepted4/42ms820 KiB
14Accepted4/42ms820 KiB
15Accepted5/52ms1076 KiB
16Wrong answer0/62ms1336 KiB
17Wrong answer0/62ms1432 KiB