제출 #537809

#제출 시각아이디문제언어결과실행 시간메모리
537809gun_ganKnapsack (NOI18_knapsack)C++17
49 / 100
1090 ms348 KiB
#include <bits/stdc++.h>
using namespace std;

const int N = 1e5, S = 2e3 + 1;

long long V[N], W[N], K[N], n, s, dp[S];

int main(){
	cin.tie(0) -> ios_base::sync_with_stdio(0);

	cin >> s >> n;	
	if(n == 1)
	{
		cin >> V[0] >> W[0] >> K[0];
		cout << min(K[0], s / W[0]) * V[0];
		return 0;
	}
	for(int i=0;i<n;i++)
	{
		cin >> V[i] >> W[i] >> K[i];
	}
	for(int i=0;i<n;i++)
	{
		for(int j=s;j>=0;j--)
		{
			for(long long k=1;k<=K[i];k++)
			{
				if(j - k * W[i] >= 0)
					dp[j] = max(dp[j], dp[j - k * W[i]] + k * V[i]);
			}
		}
	}
	// for(int i=0;i<=20;i++){
	// 	cout << i << ": " << dp[i] << "\n";
	// }
	cout << *max_element(dp, dp + s + 1);

}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...