2992021-08-20 21:10:46Babják PéterBefektetéscpp11Accepted 40/4035ms2628 KiB
#include <bits/stdc++.h>
#define N 4010
using namespace std;
struct d
{
	int a,e,t;	
};
struct cmp
{
	bool operator()(const d &p, const d &q)
	{
		return p.t<q.t;
	}	
};
int dp[2][N][2];
signed main()
{
	int n,k;
	cin>>n>>k;
	vector<d>h(n);
	for(int i=0;i<n;i++)
	{
		int a,b,c;
		cin>>a>>b>>c;
		h[i].a=a;
		h[i].e=b;
		h[i].t=c;
	}
	sort(h.begin(),h.end(),cmp());
	for(int j=1;j<=n;j++)
	{
		int z;
		bool b=j&1;
		for(int i=1;i<=k;i++)
		{
			z=i-h[j-1].a;
			if(z>=0) dp[0][i][b]=max(dp[0][i][!b],dp[0][z][!b]+h[j-1].e);
			else dp[0][i][b]=dp[0][i][!b];
			
			z=z-h[j-1].t;
			if(z>=0) dp[1][i][b]=max(dp[1][i][!b],dp[0][z][!b]+h[j-1].e);
			else dp[1][i][b]=dp[1][i][!b];
		}
	}

	
	cout<<dp[1][k][n&1];
	return 0;
}
SubtaskSumTestVerdictTimeMemory
base40/40
1Accepted0/02ms1744 KiB
2Accepted0/04ms1892 KiB
3Accepted2/21ms1872 KiB
4Accepted2/21ms1876 KiB
5Accepted1/12ms1884 KiB
6Accepted2/23ms1888 KiB
7Accepted2/22ms1896 KiB
8Accepted2/23ms1896 KiB
9Accepted2/22ms1900 KiB
10Accepted2/22ms1900 KiB
11Accepted3/39ms1956 KiB
12Accepted3/39ms1996 KiB
13Accepted3/39ms2016 KiB
14Accepted3/310ms2044 KiB
15Accepted3/38ms2088 KiB
16Accepted4/48ms2116 KiB
17Accepted1/130ms2324 KiB
18Accepted1/130ms2388 KiB
19Accepted1/130ms2444 KiB
20Accepted1/132ms2504 KiB
21Accepted1/135ms2568 KiB
22Accepted1/130ms2628 KiB