133582025-01-07 17:01:36xxxBenzinkút üzemeltetés (55)cpp17Elfogadva 55/553ms508 KiB
// Source: https://usaco.guide/general/io

#include <bits/stdc++.h>
using namespace std;

#define f first
#define s second

int main() {
	int n, k;
	cin >> n >> k;
	vector<pair<int, int> > v(n+1);
	int dp[n+1], p[n+1];
	for(int i = 0; i < n+1; i++) p[i] = 0;
	for(int i = 1; i <= n; i++) {
		cin >> v[i].f >> v[i].s;
	
	}
	vector<int> ans;
	
	for(int i = 1; i <= n; i++) {
		dp[i] = v[i].s;
		
		int j = i-1;
		int mx = 0;
		while (j > 0) {
			if (v[i].f-v[j].f >= k) {
				if (mx < dp[j]) {
					mx = dp[j];
					p[i] = j;
				}
			}
			j--;
		}
		dp[i] += mx;
		//cout << i << ": " << dp[i] << endl;
		
	}
	int maxos = 0, megoldas = 0;

	for(int i = 1; i <= n; i++) {
		if (maxos < dp[i]) {
			maxos = dp[i];
			megoldas = i;
		}
	}
	int i = megoldas;
	ans.push_back(megoldas);
	cout << dp[megoldas] << endl;

	while(p[i] != 0) {
		ans.push_back(p[i]);
		i = p[i];
	}
	cout << ans.size() << ' ';
	reverse (ans.begin(), ans.end());
	for(int x : ans) cout << x << ' ';

}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base55/55
1Elfogadva0/01ms508 KiB
2Elfogadva0/03ms316 KiB
3Elfogadva3/31ms316 KiB
4Elfogadva3/31ms316 KiB
5Elfogadva3/31ms316 KiB
6Elfogadva3/31ms316 KiB
7Elfogadva3/31ms316 KiB
8Elfogadva3/31ms316 KiB
9Elfogadva3/31ms316 KiB
10Elfogadva3/31ms316 KiB
11Elfogadva3/31ms316 KiB
12Elfogadva3/31ms508 KiB
13Elfogadva4/42ms316 KiB
14Elfogadva4/42ms316 KiB
15Elfogadva5/52ms384 KiB
16Elfogadva6/62ms404 KiB
17Elfogadva6/63ms316 KiB