217022026-01-13 18:14:32algoproBenzinkút üzemeltetés (55)cpp17Hibás válasz 0/554ms1076 KiB
// UUID: c43fa8d6-016f-4085-9ab1-90ad60ec363f
#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++)
    {
        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;
                }
                else elozo=j;
                //break;
            }
        }
        if(elozo==i-1)
        {
            for(int j=1; j<dp[i-1].size(); j++)
            {
                dp[i].push_back(dp[i-1][j]);
            }
        }
        else
        {
            for(int j=1; j<dp[elozo].size(); j++)
            {
                dp[i].push_back(dp[elozo][j]);
            }
            dp[i].push_back(i);
        }
    }
    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
base0/55
1Elfogadva0/01ms316 KiB
2Hibás válasz0/03ms820 KiB
3Hibás válasz0/31ms316 KiB
4Hibás válasz0/31ms316 KiB
5Hibás válasz0/31ms560 KiB
6Hibás válasz0/31ms316 KiB
7Hibás válasz0/31ms316 KiB
8Hibás válasz0/31ms500 KiB
9Hibás válasz0/31ms316 KiB
10Hibás válasz0/31ms316 KiB
11Hibás válasz0/31ms508 KiB
12Hibás válasz0/32ms352 KiB
13Hibás válasz0/42ms504 KiB
14Hibás válasz0/42ms564 KiB
15Hibás válasz0/53ms620 KiB
16Hibás válasz0/63ms820 KiB
17Hibás válasz0/64ms1076 KiB