235872026-01-25 21:50:03sarminBenzinkút üzemeltetés (55)cpp17Wrong answer 12/552ms508 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
// const ll MOD = 1e9+7;

#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n, k; cin >> n >> k;
    vector<int> dp(n+1, 0);
    vector<pair<int, int>> a(n+1);
    for (int i = 1; i <= n; i++) {
    	cin >> a[i].first >> a[i].second;
    }
    
    vector<int> honnan(n+1, -1), index(n+1);
    for (int i = 1; i <= n; i++) {
    	index[i] = i;
    	int m = 0, ind = -1;
    	for (int j = i-1; j >= 1; j--) {
    		if (a[i].first - a[j].first >= k) {
    			m = dp[j]; ind = index[j]; break;
    		}
    	}
    	dp[i] = max({m+a[i].second, dp[i-1], a[i].first});
    	honnan[i] = ind;
    	if (dp[i] == dp[i-1]) {
    		index[i] = i-1;
    		if (honnan[i-1] == -1) honnan[i] = i-1;
    		else honnan[i] = honnan[i-1];
    	}
    	//cerr << i << ": " << dp[i] << " " << m << " " << honnan[i] << "\n";
    	
    }
    cout << dp[n] << "\n";
    vector<int> res;
    res.push_back(n);
    for (int i = n; honnan[i] != -1; i = honnan[i]) {
    	//cerr << i << "\n";
    	res.push_back(honnan[i]);
    }
    cout << res.size() << " ";
    reverse(all(res));
    for (int i : res) cout << i << " ";

    return 0;
}
SubtaskSumTestVerdictTimeMemory
base12/55
1Accepted0/01ms508 KiB
2Wrong answer0/02ms316 KiB
3Accepted3/31ms316 KiB
4Accepted3/31ms316 KiB
5Wrong answer0/31ms316 KiB
6Accepted3/31ms316 KiB
7Wrong answer0/31ms316 KiB
8Accepted3/31ms316 KiB
9Wrong answer0/31ms316 KiB
10Wrong answer0/31ms316 KiB
11Wrong answer0/31ms316 KiB
12Wrong answer0/31ms316 KiB
13Wrong answer0/41ms316 KiB
14Wrong answer0/41ms316 KiB
15Wrong answer0/51ms508 KiB
16Wrong answer0/61ms500 KiB
17Wrong answer0/61ms316 KiB