이 문제는 어떤 특별한 알고리즘을 필요로 하는 것이 아닌, 경우의 수를 나누어 분기를 설정하고 최선의 방법을 선택해야한다.
세준이는 가로, 세로, 대각선 셋중 하나의 방식을 선택해서 갈 수 있다. 이때 대각선은 세로와 가로 1칸씩 모두 이동할 수 있음을 알 수 있다.
경우의 수는 총 4가지이다.
이 경우의 수를 모두 따져서 비용이 최소로 되는 값을 선택하면 된다.
X, Y, W, S = map(int, input().split())
INF = 10**30
if W*2 <= S:
print((X+Y)*W)
else:
answer = 0
m = min(X, Y)
answer += m*S #ex) 4, 0까지
d = (X-m)+(Y-m) #abs(X-Y)
case1, case2, case3 = INF, INF, INF
if d % 2 == 0: #대각선 처리가 가능
case1 = answer + d*S
else:
case2 = answer + (d-1)*S + W
case3 = answer + d*W
print(min(case1, case2, case3))