# -*- coding: utf-8 -*-



A, B, C, X, Y = list(map(int, input().split()))



cost = int(1e10)

for num_ac in range(0, int(1e5) + 1):

    num_A = max(0, X - num_ac)

    num_B = max(0, Y - num_ac)

    c = 2 * C * num_ac + A * num_A + B * num_B

    cost = min(c, cost)

print(cost)
A, B, C, X, Y = list(map(int, input().split()))



ans = 0

if A + B > 2 * C:

    z = min(X, Y)

    X -= z

    Y -= z

    ans += 2 * z * C



# 偏り分

if 2 * C < A:

    k = X

    X -= k

    Y -= k

    ans += 2 * C * k

if 2 * C < B:

    k = Y

    X -= k

    Y -= k

    ans += 2 * C * k



# あまり分

ans += A * max(0, X) + B * max(0, Y)

print(ans)
# -*- coding: utf-8 -*-
A, B, C, X, Y = list(map(int, input().split()))
cost = int(1e10)
for num_ac in range(0, int(1e5) + 1):
    num_A = max(0, X - num_ac)
    num_B = max(0, Y - num_ac)
    c = 2 * C * num_ac + A * num_A + B * num_B
    cost = min(c, cost)
print(cost)

A, B, C, X, Y = list(map(int, input().split()))
ans = 0
if A + B > 2 * C:
    z = min(X, Y)
    X -= z
    Y -= z
    ans += 2 * z * C
# 偏り分
if 2 * C < A:
    k = X
    X -= k
    Y -= k
    ans += 2 * C * k
if 2 * C < B:
    k = Y
    X -= k
    Y -= k
    ans += 2 * C * k
# あまり分
ans += A * max(0, X) + B * max(0, Y)
print(ans)

-# -*- coding: utf-8 -*- -cost = int(1e10) -for num_ac in range(0, int(1e5) + 1): -    num_A = max(0, X - num_ac) -    num_B = max(0, Y - num_ac) -    c = 2 * C * num_ac + A * num_A + B * num_B -    cost = min(c, cost) -print(cost) +ans = 0 +if A + B > 2 * C: +    z = min(X, Y) +    X -= z +    Y -= z +    ans += 2 * z * C +# 偏り分 +if 2 * C < A: +    k = X +    X -= k +    Y -= k +    ans += 2 * C * k +if 2 * C < B: +    k = Y +    X -= k +    Y -= k +    ans += 2 * C * k +# あまり分 +ans += A * max(0, X) + B * max(0, Y) +print(ans)