239892026-02-03 08:39:44tamasnagyBenzinkút üzemeltetés (55)cpp17Hibás válasz 12/552ms512 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; j<i; j++){
            if(benzinkut[i].first-benzinkut[j].first>=k){
                if(dp[j]+benzinkut[i].second>dp[i-1]){
                    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;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base12/55
1Hibás válasz0/01ms316 KiB
2Hibás válasz0/02ms316 KiB
3Elfogadva3/31ms316 KiB
4Elfogadva3/31ms316 KiB
5Hibás válasz0/31ms316 KiB
6Elfogadva3/31ms368 KiB
7Hibás válasz0/31ms316 KiB
8Elfogadva3/31ms316 KiB
9Hibás válasz0/31ms316 KiB
10Hibás válasz0/31ms508 KiB
11Hibás válasz0/31ms392 KiB
12Hibás válasz0/31ms408 KiB
13Hibás válasz0/42ms500 KiB
14Hibás válasz0/42ms508 KiB
15Hibás válasz0/52ms512 KiB
16Hibás válasz0/62ms316 KiB
17Hibás válasz0/62ms316 KiB