133672025-01-07 17:20:53RicsiBenzinkút üzemeltetés (55)cpp17Elfogadva 55/554ms512 KiB
#include <iostream>
#include <vector>
using namespace std;

int max(int a, int b) {
	if (a > b)return a;
	else return b;
}

int main() {
	int n, k; cin >> n >> k;
	vector<pair<int, int>>v(n + 1); vector<int>dp(n + 1, 0);
	for (int i = 1; i <= n; i++)cin >> v[i].first >> v[i].second;
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j < i; j++) {
			if (v[i].first - v[j].first >= k)dp[i] = max(dp[i], dp[j] + v[i].second);
		}
		dp[i] = max(dp[i], max(v[i].second, dp[i - 1]));
	}
	cout << dp[n] << '\n';
	vector<int>ans;
	int curr = dp[n];
	while (n != 0) {
		if (dp[n] > dp[n - 1] && dp[n] == curr) {
			ans.push_back(n);
			curr -= v[n].second;
		}
		n--;
	}
	cout << ans.size() << ' ';
	for (int i = ans.size() - 1; i >= 0; i--)cout << ans[i] << ' ';
}

RészfeladatÖsszpontTesztVerdiktIdőMemória
base55/55
1Elfogadva0/01ms316 KiB
2Elfogadva0/04ms316 KiB
3Elfogadva3/31ms316 KiB
4Elfogadva3/31ms316 KiB
5Elfogadva3/31ms512 KiB
6Elfogadva3/31ms316 KiB
7Elfogadva3/31ms356 KiB
8Elfogadva3/31ms500 KiB
9Elfogadva3/31ms316 KiB
10Elfogadva3/31ms380 KiB
11Elfogadva3/31ms508 KiB
12Elfogadva3/32ms316 KiB
13Elfogadva4/42ms316 KiB
14Elfogadva4/42ms396 KiB
15Elfogadva5/53ms416 KiB
16Elfogadva6/63ms508 KiB
17Elfogadva6/63ms500 KiB