#include #include using namespace std; struct crystal{ int x,y,c; crystal(){}; crystal(int x, int y, int c): x(x), y(y), c(c){}; }; int main(){ int gx,gy,N,F; cin >> gx >> gy >> N >> F; vector vec(N); for(int i=0;i> x >> y >> c; vec[i] = crystal(x,y,c); } vector > > dp(N+1, vector >(gx+1, vector(gy+1))); for(int i=0;i<=gx;i++){ for(int j=0;j<=gy;j++){ dp[0][i][j] = (i+j)*F; } } for(int t=0;t= 0 && j-vec[t].y >= 0){ dp[t+1][i][j] = min(dp[t][i][j], dp[t][i-vec[t].x][j-vec[t].y] + vec[t].c); }else{ dp[t+1][i][j] = dp[t][i][j]; } } } } cout << dp[N][gx][gy] << endl; return 0; }