222402026-01-14 18:24:45algoproBenzinkút üzemeltetés (55)cpp17Részben helyes 45/552ms384 KiB
// UUID: 92e7c9d9-0b53-4123-ac05-9deed3648756
#include <bits/stdc++.h>
using namespace std;

int main() {
	cin.tie(0);
	ios::sync_with_stdio(false);
	int N, tav; cin>>N>>tav;
	int maxi=0, maxis=0;
	vector<pair<int, int>> V(N+1);
	vector<int> dp(N+1, 0);
	vector<int> dps(N+1, 0);
	V[0].first=-tav-1;
	for(int i=1; i<=N; i++) cin>>V[i].first>>V[i].second;//1: tav, 2:haszon
	for(int i=1; i<=N; i++)
	{
		int j=0;
		do
		{
			if(dp[i]<dp[j]+V[i].second)
			{
				dp[i]=dp[j]+V[i].second;
				dps[i]=j;
			}
			//dp[i]=max(dp[i], dp[j]+V[i].second);
			j++;
		}while(V[j].first+tav<=V[i].first);
		if(maxi<dp[i])
		{
			maxi=dp[i];
			maxis=i;
		}
	}
	cout<<dp[N]<<"\n";
	vector<int> ki(0);
	while(maxis!=0)
	{
		ki.push_back(maxis);
		maxis=dps[maxis];
	}
	cout<<ki.size()<<" ";
	for(int i=ki.size()-1; i>=0; i--) cout<<ki[i]<<" ";
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base45/55
1Elfogadva0/01ms316 KiB
2Elfogadva0/02ms316 KiB
3Elfogadva3/31ms316 KiB
4Elfogadva3/31ms316 KiB
5Részben helyes1/31ms384 KiB
6Elfogadva3/31ms316 KiB
7Részben helyes1/31ms332 KiB
8Elfogadva3/31ms316 KiB
9Részben helyes1/31ms336 KiB
10Elfogadva3/31ms316 KiB
11Elfogadva3/31ms336 KiB
12Részben helyes1/31ms316 KiB
13Elfogadva4/41ms316 KiB
14Részben helyes2/41ms316 KiB
15Elfogadva5/52ms316 KiB
16Elfogadva6/62ms316 KiB
17Elfogadva6/62ms316 KiB