1949

Run Settings
LanguageC++
Language Version
Run Command
#include <iostream> #include <cstdio> #include <algorithm> #include <string> #include <cstring> #include <vector> #include <cmath> #include <queue> #include <stack> #include <climits> using namespace std; int w,v,n; int a[110],b[110],c[110],dp[110][110][110]; string r[110][110][110]; int main(){ cin>>w>>v>>n; for(int i=1;i<=n;i++) cin>>a[i]>>b[i]>>c[i]; for(int i=0;i<=n;i++) for(int j=0;j<=w;j++) for(int k=0;k<=v;k++) r[i][j][k]=""; for(int i=1;i<=n;i++){ for(int j=1;j<=w;j++){ for(int k=1;k<=v;k++){ if(j>=a[i]&&k>=b[i]){ dp[i][j][k]=max(dp[i-1][j][k],dp[i-1][j-a[i]][k-b[i]]+c[i]); if(dp[i-1][j][k]<dp[i-1][j-a[i]][k-b[i]]+c[i]) r[i][j][k]=r[i-1][j-a[i]][k-b[i]]+(char)(i+'0')+" "; else r[i][j][k]=r[i-1][j][k]; } else{ dp[i][j][k]=dp[i-1][j][k]; r[i][j][k]=r[i-1][j][k]; } } } } cout<<dp[n][w][v]<<endl; if(r[n][w][v]!="") r[n][w][v]=r[n][w][v].substr(0,r[n][w][v].size()-1); cout<<r[n][w][v]; return 0; } /* f[i][j][k]=max(f[i-1][j][k],f[i-1][j-v[i]][k-w[i]]+c[i]); f[j][k]=max(f[j][k],f[j-v[i]][k-w[i]]+c[i]) 1949 */
Editor Settings
Theme
Key bindings
Full width
Lines