#include #include #include #include #include #define INF 1000000000; int min(int a,int b); int main(void){ int gx,gy,n,f; scanf("%d %d %d %d",&gx,&gy,&n,&f); int x[50],y[50],c[50]; int i,j,k; for(i=0;i=0;j--){ for(k=gy;k>=0;k--){ if(j+x[i]<=gx && k+y[i]<=gy){ dp[j+x[i]][k+y[i]]=min(dp[j][k]+c[i],dp[j+x[i]][k+y[i]]); } } } } unsigned long ans=INF; for(j=0;j<=gx;j++){ for(k=0;k<=gy;k++){ dp[j][k]+=f*(gx-j+gy-k); ans=min(ans,dp[j][k]); } } printf("%lu\n",ans); return 0; } int min(int a,int b){ if(a<=b){ return a; }else{ return b; } }