#include <bits/stdc++.h>
using namespace std;
#define REP(i,x,n) for(int i = x; i < n; i++)
#define MAX 1000000001

// int n,c;

// char X[100][100];
// int dp[1000000001];
int a,b,c,x,y;
int dp[100001][100001];

int main(void){
    cin >> a >> b >> c >> x >> y;
    // int res = MAX;
    // dp[1][0] = 1500;
    // dp[0][1] = 2000;
    // dp[1][1] = 3200;
    bool flag = false;
    if (a+b > c*2) flag = true;  //優先してc2つを使う
    
    int ans = 0;
    if (flag) {
        if (x < y) {
            ans += x*c*2;
            ans += (y-x)*b;
        }
        else {
            ans += y*c*2;
            ans += (x-y)*a;
        }
    }
    else {
        ans += x*a + y*b;
    }
    
    cout << ans << endl;
    
    // REP(i,1,x+1) {
    //     REP(j,1,y+1) {
    //         int t1 = dp[i-1][j-1] + c * 2;
    //         int t2 = dp[i][j-1] + b;
    //         int t3 = dp[i-1][j] + a;
    //         dp[i][j] = min(min(t1,t2),t3);
    //         cout << i << " " << j << " " << dp[i][j] << endl;
    //     }
    // }
    
    // cout << x << y << endl;
    // cout << dp[x][y] << endl;
    // // int a[n][n];
    // // int d[n][n];
    // REP(i,0,n) REP(j,0,n) cin >> a[i][j], d[i][j] = a[i][j];
    
    // REP(k,0,n) REP(i,0,n) REP(j,0,n) {
    //     if (k == i || i == j || j == k) continue;
    //     if (d[i][k] + d[k][j] == a[i][j]) d[i][j] = MAX;
    //     else if (d[i][k] + d[k][j] < a[i][j]) {
    //         cout << -1 << endl;
    //         return 0;
    //     }
    // }

    // long long ans = 0;
    // REP(i,0,n) REP(j,0,n) {
    //     if(d[i][j] != MAX) {
    //         ans += d[i][j];
    //     }
    // }

    // cout << ans/2 << endl;
}