140912025-01-09 18:32:55miszorimarciBenzinkút üzemeltetés (55)cpp17Elfogadva 55/552ms524 KiB
#include <bits/stdc++.h>

using namespace std;

int main()
{
    int n, k; cin >> n >> k;
    vector<int>T(n+1), H(n+1);
    for(int i = 1; i <= n; i++)
    {
        cin >> T[i] >> H[i];
    }
    vector<int>DP(n+1);
    DP[1] = H[1];
    int j;
    bool b = true;
    for(int i = 1; i <= n; i++)
    {
        for(j = i-1; j > 0; j--)
        {
            if(T[i]-T[j] >= k)
            {
               b = true;
               break;
            }
        }
        if(!b)DP[i] = DP[i-1];
        else DP[i] = max(DP[i-1], DP[j]+H[i]);

    }
    cout << DP[n];
    cout << "\n";
    vector<int>ans;
    int x = n;
    while(x != 0)
    {
        if(DP[x] == DP[x-1])
        {
            x--;
            continue;
        }
        ans.push_back(x);
        int A = DP[x]-H[x];
        for(int j = x; j >= 0; j--)
        {
            if(DP[j] == A)
            {
                x = j;
                break;
            }
        }
    }
    reverse(ans.begin(), ans.end());
    cout << ans.size() << " ";
    for(int i : ans)cout << i << " ";
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base55/55
1Elfogadva0/01ms316 KiB
2Elfogadva0/01ms316 KiB
3Elfogadva3/31ms316 KiB
4Elfogadva3/31ms316 KiB
5Elfogadva3/31ms316 KiB
6Elfogadva3/31ms316 KiB
7Elfogadva3/31ms316 KiB
8Elfogadva3/31ms508 KiB
9Elfogadva3/31ms316 KiB
10Elfogadva3/31ms316 KiB
11Elfogadva3/31ms316 KiB
12Elfogadva3/31ms316 KiB
13Elfogadva4/41ms316 KiB
14Elfogadva4/41ms508 KiB
15Elfogadva5/51ms316 KiB
16Elfogadva6/62ms524 KiB
17Elfogadva6/61ms316 KiB