using System;
using System.Collections.Generic;
using static System.Console;
using static System.Convert;
 
class Program
{
    static void Main(string[] args)
    {
        ulong result = 0;

    	//読み込み情報を取得
        var input = ReadLine().Split(' ');
        
        //数値に変換
        var priceA = int.Perse(input[0]);
        var priceB = int.Perse(input[1]);
        var priceAB = int.Perse(input[2]);
        var cnt1 = int.Perse(input[3]);
        var cnt2 = int.Perse(input[4]);
        
        //最小個数を求める
        var min = Math.Min(cnt1, cnt2);
        
        //単体の最大価格を求める
        var maxPrice;
        if (min == cnt1) maxPrice = priceB;
		else maxPrice = priceA;
		
		//価格を求める
        if (priceA + priceB >= 2 * priceAB) 
        {
        	//単体個数の最大価格が、AB価格の倍以下の場合
            if (maxPrice<=2*priceAB) 
            {
            	//AB価格x最小個数の2倍を掛ける(単体の端数分以外を算出する)
            	result += 2 * priceAB * min;
            }
            else 
            { 
                //AB価格で、最大個数の方を掛ける(A,B半分余っても価格安いケース)
            	WriteLine(2 * priceAB * Math.Max(cnt1, cnt2));
            	return; 
            }
        }
        else 
        {
        	//単体の掛け算が最も安いケース
        	WriteLine(priceA * cnt1 + priceB * cnt2); 
        	return; 
        }
        //端数を足して残りの額を合算して結果を求める。
        WriteLine((Math.Max(cnt1,cnt2) - min) * maxPrice+result);
    }
}