235872026-01-25 21:50:03sarminBenzinkút üzemeltetés (55)cpp17Hibás válasz 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;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base12/55
1Elfogadva0/01ms508 KiB
2Hibás válasz0/02ms316 KiB
3Elfogadva3/31ms316 KiB
4Elfogadva3/31ms316 KiB
5Hibás válasz0/31ms316 KiB
6Elfogadva3/31ms316 KiB
7Hibás válasz0/31ms316 KiB
8Elfogadva3/31ms316 KiB
9Hibás válasz0/31ms316 KiB
10Hibás válasz0/31ms316 KiB
11Hibás válasz0/31ms316 KiB
12Hibás válasz0/31ms316 KiB
13Hibás válasz0/41ms316 KiB
14Hibás válasz0/41ms316 KiB
15Hibás válasz0/51ms508 KiB
16Hibás válasz0/61ms500 KiB
17Hibás válasz0/61ms316 KiB