217362026-01-13 18:41:52algoproBenzinkút üzemeltetés (55)cpp17Elfogadva 55/553ms1588 KiB
// UUID: fc65f829-9b36-4aa9-b19e-769658322456
#include <bits/stdc++.h>
using namespace std;
vector<vector<int>> v;
vector<vector<int>> dp;
vector<int> t;

int main()
{
	int n, k;
    cin >> n >> k;
    v.resize(n+1, vector<int>(2));
    dp.resize(n+1, vector<int>(1));
    for(int i=1; i<=n; i++)
    {
        cin >> v[i][0] >> v[i][1];
    }
    dp[0][0]=0;
    int elozo;
    for(int i=1; i<=n; i++)
    {
        int elozo=-1;
        for(int j=i-1; j>0; j--)
        {
            if(v[i][0]-v[j][0]>=k)
            {
                dp[i][0]=max(dp[i-1][0], dp[j][0]+v[i][1]);
                if(dp[i-1][0]>=dp[j][0]+v[i][1])
                {
                    elozo=i-1;
                    dp[i] = dp[i - 1];
                }
                else
                {
                    elozo=j;
                    dp[i] = dp[j];
                    dp[i][0] = dp[j][0]+v[i][1];
                    dp[i].push_back(i);
                }
                break;
            }
        }
        if (elozo==-1){
            if (v[i][1]>dp[i-1][0]){
                dp[i][0]=v[i][1];
                dp[i].push_back(i);
            }
            else{
                dp[i] = dp[i-1];
            }
        }
    }
    cout << dp[n][0] << '\n' << dp[n].size()-1 << " ";
    for(int i=1; i<dp[n].size(); i++)
    {
        cout << dp[n][i] << " ";
    }
}
/*
3 2 



*/
RészfeladatÖsszpontTesztVerdiktIdőMemória
base55/55
1Elfogadva0/01ms316 KiB
2Elfogadva0/03ms1588 KiB
3Elfogadva3/31ms316 KiB
4Elfogadva3/31ms316 KiB
5Elfogadva3/31ms316 KiB
6Elfogadva3/31ms316 KiB
7Elfogadva3/31ms316 KiB
8Elfogadva3/31ms316 KiB
9Elfogadva3/31ms316 KiB
10Elfogadva3/31ms316 KiB
11Elfogadva3/31ms316 KiB
12Elfogadva3/32ms564 KiB
13Elfogadva4/42ms820 KiB
14Elfogadva4/42ms988 KiB
15Elfogadva5/53ms1076 KiB
16Elfogadva6/62ms1332 KiB
17Elfogadva6/63ms1332 KiB