#include #define REP(i,n,N) for(int i=(n);i<(int) N;i++) #define RREP(i,n,N) for(int i=N-1;i>=(int) n;i--) #define p(s) cout<<(s)<>gx>>gy>>N>>F; REP(i,0,N) cin>>x[i]>>y[i]>>c[i]; REP(i,0,gx+1) REP(j,0,gy+1) dp[i][j]=(i+j)*F; dp[0][0]=0; REP(k,0,N) RREP(i,0,gx+1) RREP(j,0,gy+1){ if(i-x[k]<0||j-y[k]<0) continue; dp[i][j]=min(dp[i][j],dp[i-x[k]][j-y[k]]+c[k]); } p(dp[gx][gy]); return 0; }