141132025-01-09 20:07:44bovizdbBenzinkút üzemeltetés (55)cpp17Wrong answer 23/553ms2868 KiB
#include <bits/stdc++.h>
 
using namespace std;
 
#define ll long long
#define fs first
#define sc second
#define pb push_back
#define pll pair<ll, ll>
#define vll vector<ll>
#define v2ll vector<vll>
#define pqll priority_queue<ll>

const ll mod = 1e9+7;
const ll inf = LONG_LONG_MAX;

ll n, k;

void solve()
{
    cin >> n >> k;
    vector<pll> v(n);
    vll dp(n+1), dist(n+1);
    v2ll ans(n+1);
    for (auto &i : v) cin >> i.fs >> i.sc;
    for (ll i = 0; i < n; i++) {
        bool b = false;
        for (ll j = i; j >= 0; j--) {
            if (v[i].fs - dist[j] >= k) {
                b = true;
                if (dp[j] + v[i].sc > dp[i]) {
                    dp[i+1] = dp[j] + v[i].sc;
                    dist[i+1] = v[i].fs;
                    ans[i+1] = ans[j];
                    ans[i+1].pb(i);
                }
                else {
                    dp[i+1] = dp[i];
                    dist[i+1] = dist[i];
                    ans[i+1] = ans[i];
                }
                break;
            }
        }
        if (!b) {
            dp[i+1] = dp[i];
            dist[i+1] = dist[i];
            ans[i+1] = ans[i];
        }
    }
    cout << dp[n] << '\n';
    cout << ans[n].size();
    for (auto i : ans[n]) cout << ' ' << i+1;
}
 
signed main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL); cout.tie(NULL);
    ll t = 1;
    //cin >> t;
    while(t--)
    {
        solve();
    }
    return 0;
}
SubtaskSumTestVerdictTimeMemory
base23/55
1Accepted0/01ms316 KiB
2Wrong answer0/03ms2868 KiB
3Accepted3/31ms328 KiB
4Wrong answer0/31ms316 KiB
5Accepted3/31ms316 KiB
6Accepted3/31ms356 KiB
7Accepted3/31ms316 KiB
8Wrong answer0/31ms328 KiB
9Wrong answer0/31ms316 KiB
10Wrong answer0/31ms316 KiB
11Wrong answer0/31ms316 KiB
12Wrong answer0/32ms892 KiB
13Wrong answer0/42ms1332 KiB
14Wrong answer0/42ms1588 KiB
15Accepted5/53ms1844 KiB
16Accepted6/63ms2520 KiB
17Wrong answer0/63ms2612 KiB