제출 #1172322

#제출 시각아이디문제언어결과실행 시간메모리
1172322bahaktlKnapsack (NOI18_knapsack)C++20
49 / 100
10 ms17896 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define pb push_back #define all(x) (x).begin(),(x).end() #define rall(x) (x).rbegin(),(x).rend() const int inf=1e16; const int N=2e5+10; const int mod=1e9+7; int dp[1001][2001]; signed main () { ios_base::sync_with_stdio(false); cin.tie(nullptr); int n,s; cin>>s>>n; if(n==1) { int c,w,k; cin>>c>>w>>k; int ans=0; while(k--) { s-=w; if(s<0) break; ans+=c; } cout<<ans; return 0; } vector<pair<int,int>>v; for(int i=1;i<=n;i++) { int c,w,k; cin>>c>>w>>k; if(i==1) k++; while(k--) { v.pb({c,w}); //cout<<c<<' '<<w<<"\n"; } } v.pb({0,0}); //cout<<v[0].first<<"\n"; for(int i=1;i<v.size();i++) { for(int j=0;j<=s;j++) { //cout<<dp[i-1][j]<<' '; if(v[i].second > j) dp[i][j]=dp[i-1][j]; else dp[i][j]=max(dp[i-1][j],dp[i-1][j-v[i].second]+v[i].first); } //cout<<"\n"; } int mx=-inf; for(int i=0;i<=s;i++) { mx=max(mx,dp[v.size()-1][i]); } cout<<mx; }
#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...