236342026-01-26 18:43:05KristófBenzinkút üzemeltetés (55)cpp17Wrong answer 12/552ms500 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<vector<int>> dp(n+1,vector<int> (3,0));// 0:legjobb érték 1: ezelotti
    //dp[0][0]=0;
    dp[0][0]=data[0].second;
    dp[0][1]=-1;
    for(int i=1;i<n;i++)
        {
        dp[i][0]=data[i].second;
        dp[i][1]=-1;
        if(dp[i-1][0]>data[i].second)
            {
            dp[i][0]=dp[i-1][0];
            if(dp[i-1][1]==-1)
                dp[i][1]=i-1;
            else dp[i][1]=dp[i-1][1];
            }
        int j=i-1;
        while(j>-1 && data[j].first+k>data[i].first)j--;
        if(j>=0)
            {
           // cout<<j<<"aaaa\n";
            if(dp[j][0]+data[i].second>dp[i][0])
                {
                dp[i][0]=dp[j][0]+data[i].second;
                dp[i][1]=j;
                }
            }
        }
    cout<<dp[n-1][0]<<"\n";
    vector<int> ans;
    ans.reserve(n);
    int b=n-1;
    while(b!=-1)
        {
        if((dp[b][1]!=-1 && dp[b][0]==(dp[dp[b][1]][0]+data[b].second)) || dp[b][0]==data[b].second)
            ans.push_back(b);
        b=dp[b][1];
        }
    reverse(ans.begin(),ans.end());
    cout<<ans.size();
    for(int x:ans)cout<<" "<<x+1;
    return 0;
}
SubtaskSumTestVerdictTimeMemory
base12/55
1Accepted0/01ms316 KiB
2Wrong answer0/02ms316 KiB
3Accepted3/31ms500 KiB
4Accepted3/31ms316 KiB
5Wrong answer0/31ms316 KiB
6Accepted3/31ms316 KiB
7Wrong answer0/31ms396 KiB
8Accepted3/31ms316 KiB
9Wrong answer0/31ms316 KiB
10Wrong answer0/31ms316 KiB
11Wrong answer0/31ms316 KiB
12Wrong answer0/31ms316 KiB
13Wrong answer0/42ms316 KiB
14Wrong answer0/41ms316 KiB
15Wrong answer0/52ms316 KiB
16Wrong answer0/61ms316 KiB
17Wrong answer0/62ms316 KiB