216582026-01-13 17:47:50algoproBenzinkút üzemeltetés (55)cpp17Elfogadva 55/553ms1588 KiB
// UUID: 64c5cc28-c959-4dc2-a90c-8e8d18c48faf
#include <bits/stdc++.h>
using namespace std;

int main() {
	int n, k; cin >> n >> k;
	vector<pair<int, int>> stations(n + 1);
	for(int i = 1; i <= n; i++){
		cin >> stations[i].first >> stations[i].second;
	}
	vector<vector<int>> indexes(n + 1);
	vector<int> dp(n + 1);
	indexes[0]={};
	for(int i = 1; i <= n; i++){
		if(stations[i].first - stations[1].first >= k){
			int prev = 0;
			int maxdist = stations[i].first - k;
			for(int j = 0; stations[j].first <= maxdist; j++){
				prev = j;
			}
			if(dp[i - 1] < stations[i].second + dp[prev]){
				dp[i] = dp[prev] + stations[i].second;
				indexes[i] = indexes[prev];
				indexes[i].push_back(i);
			}
			else{
				dp[i] = dp[i - 1];
				indexes[i] = indexes[i - 1];
			}
				
		}
		else{
			if(dp[i - 1] < stations[i].second){
				dp[i] = stations[i].second;
				indexes[i].push_back(i);
			}
			else{
				dp[i] = dp[i - 1];
				indexes[i] = indexes[i - 1];
			}
		}
	}
	cout << dp[n] << endl;
	cout <<  indexes[n].size() << " ";
	for(auto u : indexes[n]){
		cout << u << " ";
	}
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base55/55
1Elfogadva0/01ms316 KiB
2Elfogadva0/03ms1588 KiB
3Elfogadva3/31ms316 KiB
4Elfogadva3/31ms500 KiB
5Elfogadva3/31ms316 KiB
6Elfogadva3/31ms316 KiB
7Elfogadva3/31ms508 KiB
8Elfogadva3/31ms316 KiB
9Elfogadva3/31ms316 KiB
10Elfogadva3/31ms316 KiB
11Elfogadva3/31ms316 KiB
12Elfogadva3/32ms564 KiB
13Elfogadva4/42ms1012 KiB
14Elfogadva4/42ms820 KiB
15Elfogadva5/52ms1076 KiB
16Elfogadva6/62ms1332 KiB
17Elfogadva6/63ms1332 KiB