215802026-01-13 16:44:28algoproBenzinkút üzemeltetés (55)cpp17Wrong answer 18/553ms824 KiB
// UUID: 4df9bb42-c57d-4a9b-be67-a2f3c7e8f1c1
#include <bits/stdc++.h>
using namespace std;

int main() {
	int n, k; cin >> n >> k;
	vector<vector<int>> x(n+1, vector<int>(2));
	for(int i = 1; i <= n; i++) {
		cin >> x[i][0] >> x[i][1];
	}
	sort(x.begin(), x.end());
	vector<int> dp(n+1);
	vector<vector<int>> dpnum(n+1, vector<int>(0));
	dp[0] = 0;
	int now = 0;
	int diff = 0;
	for(int i = 1; i <=n; i++) {
		diff = x[i][0];
		while(now < i-1) {
			if(diff - x[now+1][0] >= k) {
				diff -= x[now+1][0];
				now++;
			}
			else break;
		}
		if(dp[i-1] >= dp[now] + x[i][1]) {
			dp[i] = dp[i-1];
			dpnum[i] = dpnum[i-1];
		}
		else {
			dp[i] = dp[now] + x[i][1];
			dpnum[i] = dpnum[now];
			dpnum[i].push_back(i);
		}
	}
	cout << dp[n] << endl;
	cout << dpnum[n].size() << " ";
	for(int i = 0; i < dpnum[n].size(); i++) cout << dpnum[n][i] << " ";
}
SubtaskSumTestVerdictTimeMemory
base18/55
1Accepted0/01ms316 KiB
2Wrong answer0/02ms820 KiB
3Accepted3/31ms316 KiB
4Accepted3/31ms316 KiB
5Accepted3/31ms316 KiB
6Accepted3/31ms316 KiB
7Accepted3/31ms316 KiB
8Accepted3/31ms552 KiB
9Wrong answer0/31ms500 KiB
10Wrong answer0/31ms508 KiB
11Wrong answer0/31ms316 KiB
12Wrong answer0/31ms508 KiB
13Wrong answer0/42ms564 KiB
14Wrong answer0/42ms564 KiB
15Wrong answer0/52ms564 KiB
16Wrong answer0/62ms824 KiB
17Wrong answer0/63ms704 KiB