import java.util.*;

public class Main {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		String[] tokens = in.nextLine().split(" ");
		int A = Integer.parseInt(tokens[0]);
		int B = Integer.parseInt(tokens[1]);
		int C = Integer.parseInt(tokens[2]);
		int X = Integer.parseInt(tokens[3]);
		int Y = Integer.parseInt(tokens[4]);
		// 個別にそろえる方法とABを活用する方法双方を計算して，小さいほうを出力する
		int resultA = X * A + Y * B;
		int resultB = 0;
		if (X > Y) {
			// ABをY個買ってAをX-Y個買う
			resultB = (X - Y) * A + Y * C * 2;
		} else {
			resultB = X * C * 2 + (Y - X) * B;
		}
		int resultC = C * (Math.max(X, Y)) * 2;
		System.out.println(Math.min(Math.min(resultA, resultB), resultC));

		in.close();
	}
} import java.util.*; util.* java public class Main {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		String[] tokens = in.nextLine().split(" ");
		int A = Integer.parseInt(tokens[0]);
		int B = Integer.parseInt(tokens[1]);
		int C = Integer.parseInt(tokens[2]);
		int X = Integer.parseInt(tokens[3]);
		int Y = Integer.parseInt(tokens[4]);
		// 個別にそろえる方法とABを活用する方法双方を計算して，小さいほうを出力する
		int resultA = X * A + Y * B;
		int resultB = 0;
		if (X > Y) {
			// ABをY個買ってAをX-Y個買う
			resultB = (X - Y) * A + Y * C * 2;
		} else {
			resultB = X * C * 2 + (Y - X) * B;
		}
		int resultC = C * (Math.max(X, Y)) * 2;
		System.out.println(Math.min(Math.min(resultA, resultB), resultC));

		in.close();
	}
} Main public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		String[] tokens = in.nextLine().split(" ");
		int A = Integer.parseInt(tokens[0]);
		int B = Integer.parseInt(tokens[1]);
		int C = Integer.parseInt(tokens[2]);
		int X = Integer.parseInt(tokens[3]);
		int Y = Integer.parseInt(tokens[4]);
		// 個別にそろえる方法とABを活用する方法双方を計算して，小さいほうを出力する
		int resultA = X * A + Y * B;
		int resultB = 0;
		if (X > Y) {
			// ABをY個買ってAをX-Y個買う
			resultB = (X - Y) * A + Y * C * 2;
		} else {
			resultB = X * C * 2 + (Y - X) * B;
		}
		int resultC = C * (Math.max(X, Y)) * 2;
		System.out.println(Math.min(Math.min(resultA, resultB), resultC));

		in.close();
	} main {
		Scanner in = new Scanner(System.in);
		String[] tokens = in.nextLine().split(" ");
		int A = Integer.parseInt(tokens[0]);
		int B = Integer.parseInt(tokens[1]);
		int C = Integer.parseInt(tokens[2]);
		int X = Integer.parseInt(tokens[3]);
		int Y = Integer.parseInt(tokens[4]);
		// 個別にそろえる方法とABを活用する方法双方を計算して，小さいほうを出力する
		int resultA = X * A + Y * B;
		int resultB = 0;
		if (X > Y) {
			// ABをY個買ってAをX-Y個買う
			resultB = (X - Y) * A + Y * C * 2;
		} else {
			resultB = X * C * 2 + (Y - X) * B;
		}
		int resultC = C * (Math.max(X, Y)) * 2;
		System.out.println(Math.min(Math.min(resultA, resultB), resultC));

		in.close();
	} Scanner in = new Scanner(System.in); in new Scanner(System.in) String[] tokens = in.nextLine().split(" "); tokens in.nextLine().split(" ") in.nextLine().split in.nextLine() in.nextLine in " " int A = Integer.parseInt(tokens[0]); A Integer.parseInt(tokens[0]) Integer.parseInt Integer tokens[0] tokens 0 int B = Integer.parseInt(tokens[1]); B Integer.parseInt(tokens[1]) Integer.parseInt Integer tokens[1] tokens 1 int C = Integer.parseInt(tokens[2]); C Integer.parseInt(tokens[2]) Integer.parseInt Integer tokens[2] tokens 2 int X = Integer.parseInt(tokens[3]); X Integer.parseInt(tokens[3]) Integer.parseInt Integer tokens[3] tokens 3 int Y = Integer.parseInt(tokens[4]); Y Integer.parseInt(tokens[4]) Integer.parseInt Integer tokens[4] tokens 4 int resultA = X * A + Y * B; resultA X * A + Y * B X * A X A Y * B Y B int resultB = 0; resultB 0 if (X > Y) {
			// ABをY個買ってAをX-Y個買う
			resultB = (X - Y) * A + Y * C * 2;
		} else {
			resultB = X * C * 2 + (Y - X) * B;
		} X > Y X Y {
			// ABをY個買ってAをX-Y個買う
			resultB = (X - Y) * A + Y * C * 2;
		} resultB = (X - Y) * A + Y * C * 2 resultB (X - Y) * A + Y * C * 2 (X - Y) * A (X - Y) X Y A Y * C * 2 Y * C * 2 Y C 2 {
			resultB = X * C * 2 + (Y - X) * B;
		} resultB = X * C * 2 + (Y - X) * B resultB X * C * 2 + (Y - X) * B X * C * 2 X * C * 2 X C 2 (Y - X) * B (Y - X) Y X B int resultC = C * (Math.max(X, Y)) * 2; resultC C * (Math.max(X, Y)) * 2 C * (Math.max(X, Y)) * 2 C (Math.max(X, Y)) Math.max Math X Y 2 System.out.println(Math.min(Math.min(resultA, resultB), resultC)) System.out.println System.out System System.out Math.min(Math.min(resultA, resultB), resultC) Math.min Math Math.min(resultA, resultB) Math.min Math resultA resultB resultC in.close() in.close in String[] args args public class Main {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		String[] tokens = in.nextLine().split(" ");
		int A = Integer.parseInt(tokens[0]);
		int B = Integer.parseInt(tokens[1]);
		int C = Integer.parseInt(tokens[2]);
		int X = Integer.parseInt(tokens[3]);
		int Y = Integer.parseInt(tokens[4]);
		// 個別にそろえる方法とABを活用する方法双方を計算して，小さいほうを出力する
		int resultA = X * A + Y * B;
		int resultB = 0;
		if (X > Y) {
			// ABをY個買ってAをX-Y個買う
			resultB = (X - Y) * A + Y * C * 2;
		} else {
			resultB = X * C * 2 + (Y - X) * B;
		}
		int resultC = C * (Math.max(X, Y)) * 2;
		System.out.println(Math.min(Math.min(resultA, resultB), resultC));

		in.close();
	}
} public class Main {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		String[] tokens = in.nextLine().split(" ");
		int A = Integer.parseInt(tokens[0]);
		int B = Integer.parseInt(tokens[1]);
		int C = Integer.parseInt(tokens[2]);
		int X = Integer.parseInt(tokens[3]);
		int Y = Integer.parseInt(tokens[4]);
		// 個別にそろえる方法とABを活用する方法双方を計算して，小さいほうを出力する
		int resultA = X * A + Y * B;
		int resultB = 0;
		if (X > Y) {
			// ABをY個買ってAをX-Y個買う
			resultB = (X - Y) * A + Y * C * 2;
		} else {
			resultB = X * C * 2 + (Y - X) * B;
		}
		int resultC = C * (Math.max(X, Y)) * 2;
		System.out.println(Math.min(Math.min(resultA, resultB), resultC));

		in.close();
	}
} Main
import java.util.*;

public class Main {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		String[] tokens = in.nextLine().split(" ");
		int A = Integer.parseInt(tokens[0]);
		int B = Integer.parseInt(tokens[1]);
		int C = Integer.parseInt(tokens[2]);
		int X = Integer.parseInt(tokens[3]);
		int Y = Integer.parseInt(tokens[4]);
		// 個別にそろえる方法とABを活用する方法双方を計算して，小さいほうを出力する
		int resultA = X * A + Y * B;
		int resultB = 0;
		if (X > Y) {
			// ABをY個買ってAをX-Y個買う
			resultB = (X - Y) * A + Y * C * 2;
		} else {
			resultB = X * C * 2 + (Y - X) * B;
		}
		int resultC = C * (Math.max(X, Y)) * 2;
		System.out.println(Math.min(Math.min(resultA, resultB), resultC));

		in.close();
	}
}