239902026-02-03 08:42:48tamasnagyBenzinkút üzemeltetés (55)cpp17Hibás válasz 0/554ms508 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
base0/55
1Hibás válasz0/01ms316 KiB
2Elfogadva0/04ms508 KiB
3Hibás válasz0/31ms500 KiB
4Hibás válasz0/31ms316 KiB
5Hibás válasz0/31ms336 KiB
6Hibás válasz0/31ms316 KiB
7Hibás válasz0/32ms316 KiB
8Hibás válasz0/31ms316 KiB
9Hibás válasz0/31ms316 KiB
10Hibás válasz0/31ms316 KiB
11Hibás válasz0/31ms316 KiB
12Hibás válasz0/32ms508 KiB
13Hibás válasz0/42ms404 KiB
14Hibás válasz0/43ms316 KiB
15Hibás válasz0/53ms316 KiB
16Hibás válasz0/63ms392 KiB
17Hibás válasz0/64ms316 KiB