제출 #1131249

#제출 시각아이디문제언어결과실행 시간메모리
1131249nlknKnapsack (NOI18_knapsack)C++20
73 / 100
1095 ms1348 KiB
// Source: https://usaco.guide/general/io

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

int main() {
	int n,m; cin >> m >> n;	
	int v[n],w[n],k[n];
	for(int i=0; i<n; i++)cin>>v[i]>>w[i]>>k[i];
	vector<int> prev(m+1);
	for(int j=0; j<=m; j++)prev[j]=0;
	for(int j=1; j<=k[0]&&j*w[0]<=m; j++){
		
		prev[j*w[0]]=v[0]*j;
	}
	//for(int j=0; j<=m; j++)cout<<dp[0][j]<<" ";
	//cout<<endl;
	for(int i=1; i<n; i++){
		vector<int> curr(m+1);
		for(int j=0; j<=m; j++)curr[j]=prev[j];
		for(int j=0; j<=m; j++){
			for(int l=1; l<=k[i]&&j+l*w[i]<=m; l++){
				curr[j+l*w[i]]=max(curr[j+l*w[i]],prev[j]+v[i]*l);
			}
		}
		prev=curr;
		//for(int j=0; j<=m; j++)cout<<dp[i][j]<<" ";
		//cout<<endl;
	}
	int ans=0;
	for(int i=0; i<=m; i++)ans=max(ans,prev[i]);
	cout<<ans;
}
#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...