Submission #1195276

#TimeUsernameProblemLanguageResultExecution timeMemory
1195276lukasuliashviliKnapsack (NOI18_knapsack)C++17
73 / 100
1098 ms136112 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define rep(i,a,b) for(int i=a; i<=b; i++) #define fs first #define sc second #define pb push_back const int N=2*1e6; const int R=2002; int a[N],v[N],w[N],k[N],dp[N]; vector<pair<int,int>> vec[N]; signed main(){ int n,s; cin>>s>>n; rep(i,1,n){cin>>v[i]>>w[i]>>k[i]; k[i]=min(k[i],R);} rep(i,1,n){ int pow=1; int k2=k[i]; while(pow<=k2){ k2-=pow; pair<int,int> pr; pr.fs=v[i]*pow; pr.sc=w[i]*pow; vec[i].pb(pr); pow++; if(pow>k2 and k2!=0){ pr.fs=v[i]*k2; pr.sc=w[i]*k2; vec[i].pb(pr); } } } // for(auto x:vec){ // cout<<x.fs<<" "<<x.sc<<" "<<endl; // } for(int kl=1; kl<=n; kl++){ for(int i=0; i<vec[kl].size(); i++){ for(int j=s; j>=vec[kl][i].sc; j--){ dp[j]=max(dp[j-vec[kl][i].sc]+vec[kl][i].fs,dp[j]); } } } cout<<dp[s]<<endl; }
#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...