144512025-01-10 20:11:07999Benzinkút üzemeltetés (55)cpp17Időlimit túllépés 0/55266ms32000 KiB
// Source: https://usaco.guide/general/io

#include <bits/stdc++.h>
using namespace std;

int main() {
	int n,k;
	cin>>n>>k;
	map<int,pair<int,int>> m;
	vector<int> dp(n*k+1),t(n*k+1);
	for(int i = 0;i<n;i++){
		int a,b;
		cin>>a>>b;
		m[a]={b,i+1};
		dp[a]=b;
		t[a]=a;
	}
	for(int i = 1;i<=n*k;i++){
		if(dp[i-1]>dp[i]){
			dp[i]=dp[i-1];
			t[i]=t[i-1];
		}
		if(i>=k&&dp[i]<m[i].first+dp[i-k]){
			dp[i]=m[i].first+dp[i-k];
			t[i]=i;
		}
	}
	cout<<dp[n*k]<<endl;
	vector<int> ans;
	int i=t[n*k];
	//for(int i = 0;i<n*k+1;i++)cout<<t[i]<<endl;return 0;
	while(i>0){
		ans.push_back(m[i].second);
		i=i-m[i].first;
	}
	cout<<ans.size()<<' ';
	reverse(ans.begin(),ans.end());
	for(auto e:ans)cout<<e<<' ';
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base0/55
1Elfogadva0/01ms316 KiB
2Időlimit túllépés0/0261ms32000 KiB
3Futási hiba0/31ms316 KiB
4Hibás válasz0/31ms316 KiB
5Futási hiba0/3116ms32000 KiB
6Hibás válasz0/31ms316 KiB
7Futási hiba0/3123ms32000 KiB
8Hibás válasz0/31ms508 KiB
9Futási hiba0/3200ms32000 KiB
10Futási hiba0/3151ms32000 KiB
11Futási hiba0/3141ms32000 KiB
12Időlimit túllépés0/3236ms32000 KiB
13Futási hiba0/4171ms32000 KiB
14Időlimit túllépés0/4237ms32000 KiB
15Időlimit túllépés0/5231ms32000 KiB
16Időlimit túllépés0/6239ms32000 KiB
17Időlimit túllépés0/6266ms32000 KiB