program main implicit none integer*8::N,A,B,W,i,j integer*8,allocatable::D(:) integer*8,allocatable::dp(:),pdp(:) read *, N,A,B,W allocate(D(N)) allocate(dp(0:N)) allocate(pdp(0:N)) read *, D dp(0) = W + D(1) dp(1) = W - A + B*1 do i=2,N pdp(0:i-1) = dp(0:i-1) dp = MINVAL(pdp(0:i-1)) + D(i) do j=1,i dp(j) = pdp(j-1) - A + B*j end do end do print '(i0)', MINVAL(dp(0:N)) end program