1 //二维费用背包
2 #include<bits/stdc++.h>
3 using namespace std;
4 const int maxn=55;
5 const int maxv1=405;
6 const int maxv2=405;
7 int v1[maxn],v2[maxn],w[maxn],n,v1_tot,v2_tot,f[maxv1][maxv2];
8 int main()
9 {
10 scanf("%d%d%d",&v1_tot,&v2_tot,&n);
11 for(int i=1;i<=n;++i) scanf("%d%d%d",&v1[i],&v2[i],&w[i]);
12 for(int i=1;i<=n;++i)
13 for(int j=v1_tot;j>=v1[i];--j)
14 for(int k=v2_tot;k>=v2[i];--k)
15 f[j][k]=max(f[j][k],f[j-v1[i]][k-v2[i]]+w[i]);
16 printf("%d",f[v1_tot][v2_tot]);
17 return 0;
18 }