fun main(args: Array<String>) {

    val arr = readLine()!!.split(" ").map { it.toInt() }

    val A = arr[0].toInt()
    val B = arr[1].toInt()
    val C = arr[2].toInt()
    val X = arr[3].toInt()
    val Y = arr[4].toInt()

    var result = 0

    // 何かロジックが汚いので再考、単発で大きい側の場合と小さい側の場合で処理分けできないか？
    // 単発での組み合わせは、両方、A, Bの3択。その中でA-Xが多いケースと少数派なケースがある。
    if (A > 2 * C && B > 2 * C) {

        result = if (X > Y) X * 2 * C else Y * 2 * C
    } else if (A > 2 * C) {

        result = if (X > Y) X * 2 * C else X * 2 * C + (X - Y) * B
    } else if (B > 2 * C) {

        result = if (X > Y) Y * 2 * C + (X - Y) * A else Y * 2 * C
    } else if (A + B > 2 * C) {

        result = if (X > Y) 2 * C * Y + (X - Y) * A else 2 * C * X + (Y - X) * B
    } else {
        result = X * A + Y * B
    }
    println(result)
}