239932026-02-03 08:46:34tamasnagyBenzinkút üzemeltetés (55)cpp17Wrong answer 36/553ms508 KiB
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
int n,k;
vector <pair<int,int>> benzinkut;
vector <int> dp;
vector <int> os;
vector <int> dads;

void solve(){
    for(int i=1; i<=n; i++){
        for(int j=0; benzinkut[i].first-benzinkut[j].first>=k; j++){
                if(dp[j]+benzinkut[i].second>dp[i-1] && dp[j]+benzinkut[i].second>dp[i]){
                    dp[i]=dp[j]+benzinkut[i].second;
                    os[i]=j;
                }
                else{
//                    dp[i]=dp[i-1];
//                    os[i]=os[i-1];
                }
            }
        if(dp[i]==0){
            dp[i]=benzinkut[i].second;
        }
    }
    cout<<dp[n]<<endl;
//    for(int i=1; i<=n; i++){
//        cout<<dp[i]<<' '<<os[i]<<endl;
//    }
}

void visszakeres(){
    int x=n;
    while(x!=0){
        dads.push_back(x);
        x=os[x];
    }
    cout<<dads.size()<<' ';
    for(int i = dads.size()-1; i>=0; i--){
        cout<<dads[i]<<' ';
    }
}

int main()
{
    cin>>n>>k;
    benzinkut.resize(n+1);
    dp.resize(n+1);
    os.resize(n+1);
    for(int i=1; i<=n; i++){
        cin>>benzinkut[i].first>>benzinkut[i].second;
    }
    benzinkut[0].first=-1001;
    solve();
    visszakeres();
    return 0;
}
SubtaskSumTestVerdictTimeMemory
base36/55
1Accepted0/01ms500 KiB
2Accepted0/03ms316 KiB
3Accepted3/31ms316 KiB
4Accepted3/31ms316 KiB
5Wrong answer0/31ms500 KiB
6Wrong answer0/31ms316 KiB
7Wrong answer0/31ms316 KiB
8Accepted3/31ms500 KiB
9Wrong answer0/32ms500 KiB
10Accepted3/32ms508 KiB
11Accepted3/32ms316 KiB
12Wrong answer0/32ms316 KiB
13Accepted4/42ms316 KiB
14Wrong answer0/42ms316 KiB
15Accepted5/52ms316 KiB
16Accepted6/62ms340 KiB
17Accepted6/63ms316 KiB