222192026-01-14 18:07:46algoproBenzinkút üzemeltetés (55)cpp17Hibás válasz 0/553ms500 KiB
// UUID: ec562d08-e005-44e9-af87-65e4e1e12489
#include <bits/stdc++.h>
using namespace std;

int main() {
	int n,k;
	cin >> n >> k;
	vector<pair<int,int>>bz(n);
	vector<int>tav(n);
	for(int i=0; i<n; i++){
		cin >> bz[i].first >> bz[i].second;
		tav[i]=bz[i].first;
	}
	vector<int>dp(n);
	vector<bool>vsz(n, false);
	dp[0]=bz[0].second;
	int l=0;
	for(int i=1; i<n; i++){
		//int j;
		while(bz[i].first-bz[l].first>=k && l<=i)l++;
		l--;
		if(l>=0){
		dp[i]=max(dp[i-1], bz[i].second+dp[l]);
		}
		else{
			dp[i]=max(dp[i-1], bz[i].second);
			l=0;
		} 
		if(dp[i]!=dp[i-1])vsz[i]=true;
		cout << dp[i] << " ";
	}
	cout<< dp[n-1] << '\n';
	int maxi=0;
	vector<int> ans;
	int i=n-1;
	while(i>=0){
		if(vsz[i]){
			ans.push_back(i+1);
			int j=i-1;
			while(j>=0 && bz[i].first-bz[j].first<k)j--;
			i=j;
		}
		else i--;
	}
	cout << ans.size() << " ";
	for(int j=0; j<ans.size(); j++){cout << ans[j]<< " ";}
}
/*l=n-1;
	for(int i=n-1; i>0; i-- ){
		while(bz[i].first-bz[l].first>=k && l>=0)l--;
		l++;
		if(l<n){
		if(dp[i]!=dp[l])maxi ++; }
		else {l=n-1;}
	}
	cout << maxi << " ";
	for(int i=n-1; i>0; i-- ){
		while(bz[i].first-bz[l].first>=k && l>=0)l--;;
		l++;
		if(l<n){
		if(dp[i]!=dp[l])cout << i+1 << " "; }
		else l=n-1;
	}*/
RészfeladatÖsszpontTesztVerdiktIdőMemória
base0/55
1Hibás válasz0/01ms500 KiB
2Elfogadva0/03ms420 KiB
3Hibás válasz0/31ms500 KiB
4Hibás válasz0/32ms328 KiB
5Hibás válasz0/31ms328 KiB
6Hibás válasz0/31ms328 KiB
7Hibás válasz0/31ms328 KiB
8Hibás válasz0/31ms328 KiB
9Hibás válasz0/31ms328 KiB
10Hibás válasz0/31ms400 KiB
11Hibás válasz0/31ms328 KiB
12Hibás válasz0/31ms328 KiB
13Hibás válasz0/41ms328 KiB
14Hibás válasz0/41ms328 KiB
15Hibás válasz0/52ms328 KiB
16Hibás válasz0/61ms328 KiB
17Hibás válasz0/61ms328 KiB