import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader buff = null;
		buff = new BufferedReader(new InputStreamReader(System.in));


		int A = 0, B = 0, C = 0;
		long X = 0, Y = 0;
		String[] box = buff.readLine().split(" ");
		A = Integer.parseInt(box[0]);
		B = Integer.parseInt(box[1]);
		C = Integer.parseInt(box[2]);
		X = Long.parseLong(box[3]);
		Y = Long.parseLong(box[4]);
		long ans = 0;

		double pre_X = X, pre_Y = Y;
		long countAB = 0, countA = 0, countB = 0;
		/*while((pre_X > 0) || (pre_Y > 0)){
			if(pre_X >= 0.5 && pre_Y >= 0.5){
				long half = (A/2) + (B/2);
				if(half < C){
					ans += half;
				} else {
					ans += C;
				}
				pre_X -= 0.5;
				pre_Y -= 0.5;
				countAB++;
			} else if(pre_X >= 1){
				ans += A;
				pre_X--;
				countA++;
			} else if(pre_Y >= 1){
				ans += B;
				pre_Y--;
				countB++;
			}
		}*/
		if(X < Y){
			ans += X * 2 * C;
			ans += (Y - X) * B;
			//System.out.println("A1: " + (X * 2) + " " + (Y - X) + " " + ans);
		}else{
			ans += Y * 2 * C;
			ans += (X - Y) * A;
			//System.out.println("A2: " + (Y * 2) + " " + (X - Y) + " "  + ans);
		}
		long over = 0;
		if(X > Y){
			over = X * 2 * C;
			//System.out.println("B1: " + X * 2 + " " + over);
		} else {
			over = Y * 2 * C;
			//System.out.println("B2: " + Y * 2 + " " + over);
		}
		if(ans > over){
			ans = over;
		}

		long usu = X * A + Y * B;
		//System.out.println("C: " + X + " " + Y + " " + usu);
		if(ans > usu){
			ans = usu;
		}

		System.out.println(ans);
	}

	static long f() {
		long ans = 0;


		return ans;
	}
} import java.io.BufferedReader; BufferedReader java.io import java.io.IOException; IOException java.io import java.io.InputStreamReader; InputStreamReader java.io public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader buff = null;
		buff = new BufferedReader(new InputStreamReader(System.in));


		int A = 0, B = 0, C = 0;
		long X = 0, Y = 0;
		String[] box = buff.readLine().split(" ");
		A = Integer.parseInt(box[0]);
		B = Integer.parseInt(box[1]);
		C = Integer.parseInt(box[2]);
		X = Long.parseLong(box[3]);
		Y = Long.parseLong(box[4]);
		long ans = 0;

		double pre_X = X, pre_Y = Y;
		long countAB = 0, countA = 0, countB = 0;
		/*while((pre_X > 0) || (pre_Y > 0)){
			if(pre_X >= 0.5 && pre_Y >= 0.5){
				long half = (A/2) + (B/2);
				if(half < C){
					ans += half;
				} else {
					ans += C;
				}
				pre_X -= 0.5;
				pre_Y -= 0.5;
				countAB++;
			} else if(pre_X >= 1){
				ans += A;
				pre_X--;
				countA++;
			} else if(pre_Y >= 1){
				ans += B;
				pre_Y--;
				countB++;
			}
		}*/
		if(X < Y){
			ans += X * 2 * C;
			ans += (Y - X) * B;
			//System.out.println("A1: " + (X * 2) + " " + (Y - X) + " " + ans);
		}else{
			ans += Y * 2 * C;
			ans += (X - Y) * A;
			//System.out.println("A2: " + (Y * 2) + " " + (X - Y) + " "  + ans);
		}
		long over = 0;
		if(X > Y){
			over = X * 2 * C;
			//System.out.println("B1: " + X * 2 + " " + over);
		} else {
			over = Y * 2 * C;
			//System.out.println("B2: " + Y * 2 + " " + over);
		}
		if(ans > over){
			ans = over;
		}

		long usu = X * A + Y * B;
		//System.out.println("C: " + X + " " + Y + " " + usu);
		if(ans > usu){
			ans = usu;
		}

		System.out.println(ans);
	}

	static long f() {
		long ans = 0;


		return ans;
	}
} Main public static void main(String[] args) throws IOException {
		BufferedReader buff = null;
		buff = new BufferedReader(new InputStreamReader(System.in));


		int A = 0, B = 0, C = 0;
		long X = 0, Y = 0;
		String[] box = buff.readLine().split(" ");
		A = Integer.parseInt(box[0]);
		B = Integer.parseInt(box[1]);
		C = Integer.parseInt(box[2]);
		X = Long.parseLong(box[3]);
		Y = Long.parseLong(box[4]);
		long ans = 0;

		double pre_X = X, pre_Y = Y;
		long countAB = 0, countA = 0, countB = 0;
		/*while((pre_X > 0) || (pre_Y > 0)){
			if(pre_X >= 0.5 && pre_Y >= 0.5){
				long half = (A/2) + (B/2);
				if(half < C){
					ans += half;
				} else {
					ans += C;
				}
				pre_X -= 0.5;
				pre_Y -= 0.5;
				countAB++;
			} else if(pre_X >= 1){
				ans += A;
				pre_X--;
				countA++;
			} else if(pre_Y >= 1){
				ans += B;
				pre_Y--;
				countB++;
			}
		}*/
		if(X < Y){
			ans += X * 2 * C;
			ans += (Y - X) * B;
			//System.out.println("A1: " + (X * 2) + " " + (Y - X) + " " + ans);
		}else{
			ans += Y * 2 * C;
			ans += (X - Y) * A;
			//System.out.println("A2: " + (Y * 2) + " " + (X - Y) + " "  + ans);
		}
		long over = 0;
		if(X > Y){
			over = X * 2 * C;
			//System.out.println("B1: " + X * 2 + " " + over);
		} else {
			over = Y * 2 * C;
			//System.out.println("B2: " + Y * 2 + " " + over);
		}
		if(ans > over){
			ans = over;
		}

		long usu = X * A + Y * B;
		//System.out.println("C: " + X + " " + Y + " " + usu);
		if(ans > usu){
			ans = usu;
		}

		System.out.println(ans);
	} main {
		BufferedReader buff = null;
		buff = new BufferedReader(new InputStreamReader(System.in));


		int A = 0, B = 0, C = 0;
		long X = 0, Y = 0;
		String[] box = buff.readLine().split(" ");
		A = Integer.parseInt(box[0]);
		B = Integer.parseInt(box[1]);
		C = Integer.parseInt(box[2]);
		X = Long.parseLong(box[3]);
		Y = Long.parseLong(box[4]);
		long ans = 0;

		double pre_X = X, pre_Y = Y;
		long countAB = 0, countA = 0, countB = 0;
		/*while((pre_X > 0) || (pre_Y > 0)){
			if(pre_X >= 0.5 && pre_Y >= 0.5){
				long half = (A/2) + (B/2);
				if(half < C){
					ans += half;
				} else {
					ans += C;
				}
				pre_X -= 0.5;
				pre_Y -= 0.5;
				countAB++;
			} else if(pre_X >= 1){
				ans += A;
				pre_X--;
				countA++;
			} else if(pre_Y >= 1){
				ans += B;
				pre_Y--;
				countB++;
			}
		}*/
		if(X < Y){
			ans += X * 2 * C;
			ans += (Y - X) * B;
			//System.out.println("A1: " + (X * 2) + " " + (Y - X) + " " + ans);
		}else{
			ans += Y * 2 * C;
			ans += (X - Y) * A;
			//System.out.println("A2: " + (Y * 2) + " " + (X - Y) + " "  + ans);
		}
		long over = 0;
		if(X > Y){
			over = X * 2 * C;
			//System.out.println("B1: " + X * 2 + " " + over);
		} else {
			over = Y * 2 * C;
			//System.out.println("B2: " + Y * 2 + " " + over);
		}
		if(ans > over){
			ans = over;
		}

		long usu = X * A + Y * B;
		//System.out.println("C: " + X + " " + Y + " " + usu);
		if(ans > usu){
			ans = usu;
		}

		System.out.println(ans);
	} BufferedReader buff = null; buff null buff = new BufferedReader(new InputStreamReader(System.in)) buff new BufferedReader(new InputStreamReader(System.in)) int A = 0 A 0 B = 0 B 0 C = 0; C 0 long X = 0 X 0 Y = 0; Y 0 String[] box = buff.readLine().split(" "); box buff.readLine().split(" ") buff.readLine().split buff.readLine() buff.readLine buff " " A = Integer.parseInt(box[0]) A Integer.parseInt(box[0]) Integer.parseInt Integer box[0] box 0 B = Integer.parseInt(box[1]) B Integer.parseInt(box[1]) Integer.parseInt Integer box[1] box 1 C = Integer.parseInt(box[2]) C Integer.parseInt(box[2]) Integer.parseInt Integer box[2] box 2 X = Long.parseLong(box[3]) X Long.parseLong(box[3]) Long.parseLong Long box[3] box 3 Y = Long.parseLong(box[4]) Y Long.parseLong(box[4]) Long.parseLong Long box[4] box 4 long ans = 0; ans 0 double pre_X = X pre_X X pre_Y = Y; pre_Y Y long countAB = 0 countAB 0 countA = 0 countA 0 countB = 0; countB 0 if(X < Y){
			ans += X * 2 * C;
			ans += (Y - X) * B;
			//System.out.println("A1: " + (X * 2) + " " + (Y - X) + " " + ans);
		}else{
			ans += Y * 2 * C;
			ans += (X - Y) * A;
			//System.out.println("A2: " + (Y * 2) + " " + (X - Y) + " "  + ans);
		} X < Y X Y {
			ans += X * 2 * C;
			ans += (Y - X) * B;
			//System.out.println("A1: " + (X * 2) + " " + (Y - X) + " " + ans);
		} ans += X * 2 * C ans X * 2 * C X * 2 * C X 2 C ans += (Y - X) * B ans (Y - X) * B (Y - X) Y X B {
			ans += Y * 2 * C;
			ans += (X - Y) * A;
			//System.out.println("A2: " + (Y * 2) + " " + (X - Y) + " "  + ans);
		} ans += Y * 2 * C ans Y * 2 * C Y * 2 * C Y 2 C ans += (X - Y) * A ans (X - Y) * A (X - Y) X Y A long over = 0; over 0 if(X > Y){
			over = X * 2 * C;
			//System.out.println("B1: " + X * 2 + " " + over);
		} else {
			over = Y * 2 * C;
			//System.out.println("B2: " + Y * 2 + " " + over);
		} X > Y X Y {
			over = X * 2 * C;
			//System.out.println("B1: " + X * 2 + " " + over);
		} over = X * 2 * C over X * 2 * C X * 2 * C X 2 C {
			over = Y * 2 * C;
			//System.out.println("B2: " + Y * 2 + " " + over);
		} over = Y * 2 * C over Y * 2 * C Y * 2 * C Y 2 C if(ans > over){
			ans = over;
		} ans > over ans over {
			ans = over;
		} ans = over ans over long usu = X * A + Y * B; usu X * A + Y * B X * A X A Y * B Y B if(ans > usu){
			ans = usu;
		} ans > usu ans usu {
			ans = usu;
		} ans = usu ans usu System.out.println(ans) System.out.println System.out System System.out ans String[] args args static long f() {
		long ans = 0;


		return ans;
	} f {
		long ans = 0;


		return ans;
	} long ans = 0; ans 0 return ans; ans public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader buff = null;
		buff = new BufferedReader(new InputStreamReader(System.in));


		int A = 0, B = 0, C = 0;
		long X = 0, Y = 0;
		String[] box = buff.readLine().split(" ");
		A = Integer.parseInt(box[0]);
		B = Integer.parseInt(box[1]);
		C = Integer.parseInt(box[2]);
		X = Long.parseLong(box[3]);
		Y = Long.parseLong(box[4]);
		long ans = 0;

		double pre_X = X, pre_Y = Y;
		long countAB = 0, countA = 0, countB = 0;
		/*while((pre_X > 0) || (pre_Y > 0)){
			if(pre_X >= 0.5 && pre_Y >= 0.5){
				long half = (A/2) + (B/2);
				if(half < C){
					ans += half;
				} else {
					ans += C;
				}
				pre_X -= 0.5;
				pre_Y -= 0.5;
				countAB++;
			} else if(pre_X >= 1){
				ans += A;
				pre_X--;
				countA++;
			} else if(pre_Y >= 1){
				ans += B;
				pre_Y--;
				countB++;
			}
		}*/
		if(X < Y){
			ans += X * 2 * C;
			ans += (Y - X) * B;
			//System.out.println("A1: " + (X * 2) + " " + (Y - X) + " " + ans);
		}else{
			ans += Y * 2 * C;
			ans += (X - Y) * A;
			//System.out.println("A2: " + (Y * 2) + " " + (X - Y) + " "  + ans);
		}
		long over = 0;
		if(X > Y){
			over = X * 2 * C;
			//System.out.println("B1: " + X * 2 + " " + over);
		} else {
			over = Y * 2 * C;
			//System.out.println("B2: " + Y * 2 + " " + over);
		}
		if(ans > over){
			ans = over;
		}

		long usu = X * A + Y * B;
		//System.out.println("C: " + X + " " + Y + " " + usu);
		if(ans > usu){
			ans = usu;
		}

		System.out.println(ans);
	}

	static long f() {
		long ans = 0;


		return ans;
	}
} public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader buff = null;
		buff = new BufferedReader(new InputStreamReader(System.in));


		int A = 0, B = 0, C = 0;
		long X = 0, Y = 0;
		String[] box = buff.readLine().split(" ");
		A = Integer.parseInt(box[0]);
		B = Integer.parseInt(box[1]);
		C = Integer.parseInt(box[2]);
		X = Long.parseLong(box[3]);
		Y = Long.parseLong(box[4]);
		long ans = 0;

		double pre_X = X, pre_Y = Y;
		long countAB = 0, countA = 0, countB = 0;
		/*while((pre_X > 0) || (pre_Y > 0)){
			if(pre_X >= 0.5 && pre_Y >= 0.5){
				long half = (A/2) + (B/2);
				if(half < C){
					ans += half;
				} else {
					ans += C;
				}
				pre_X -= 0.5;
				pre_Y -= 0.5;
				countAB++;
			} else if(pre_X >= 1){
				ans += A;
				pre_X--;
				countA++;
			} else if(pre_Y >= 1){
				ans += B;
				pre_Y--;
				countB++;
			}
		}*/
		if(X < Y){
			ans += X * 2 * C;
			ans += (Y - X) * B;
			//System.out.println("A1: " + (X * 2) + " " + (Y - X) + " " + ans);
		}else{
			ans += Y * 2 * C;
			ans += (X - Y) * A;
			//System.out.println("A2: " + (Y * 2) + " " + (X - Y) + " "  + ans);
		}
		long over = 0;
		if(X > Y){
			over = X * 2 * C;
			//System.out.println("B1: " + X * 2 + " " + over);
		} else {
			over = Y * 2 * C;
			//System.out.println("B2: " + Y * 2 + " " + over);
		}
		if(ans > over){
			ans = over;
		}

		long usu = X * A + Y * B;
		//System.out.println("C: " + X + " " + Y + " " + usu);
		if(ans > usu){
			ans = usu;
		}

		System.out.println(ans);
	}

	static long f() {
		long ans = 0;


		return ans;
	}
} Main
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader buff = null;
		buff = new BufferedReader(new InputStreamReader(System.in));


		int A = 0, B = 0, C = 0;
		long X = 0, Y = 0;
		String[] box = buff.readLine().split(" ");
		A = Integer.parseInt(box[0]);
		B = Integer.parseInt(box[1]);
		C = Integer.parseInt(box[2]);
		X = Long.parseLong(box[3]);
		Y = Long.parseLong(box[4]);
		long ans = 0;

		double pre_X = X, pre_Y = Y;
		long countAB = 0, countA = 0, countB = 0;
		/*while((pre_X > 0) || (pre_Y > 0)){
			if(pre_X >= 0.5 && pre_Y >= 0.5){
				long half = (A/2) + (B/2);
				if(half < C){
					ans += half;
				} else {
					ans += C;
				}
				pre_X -= 0.5;
				pre_Y -= 0.5;
				countAB++;
			} else if(pre_X >= 1){
				ans += A;
				pre_X--;
				countA++;
			} else if(pre_Y >= 1){
				ans += B;
				pre_Y--;
				countB++;
			}
		}*/
		if(X < Y){
			ans += X * 2 * C;
			ans += (Y - X) * B;
			//System.out.println("A1: " + (X * 2) + " " + (Y - X) + " " + ans);
		}else{
			ans += Y * 2 * C;
			ans += (X - Y) * A;
			//System.out.println("A2: " + (Y * 2) + " " + (X - Y) + " "  + ans);
		}
		long over = 0;
		if(X > Y){
			over = X * 2 * C;
			//System.out.println("B1: " + X * 2 + " " + over);
		} else {
			over = Y * 2 * C;
			//System.out.println("B2: " + Y * 2 + " " + over);
		}
		if(ans > over){
			ans = over;
		}

		long usu = X * A + Y * B;
		//System.out.println("C: " + X + " " + Y + " " + usu);
		if(ans > usu){
			ans = usu;
		}

		System.out.println(ans);
	}

	static long f() {
		long ans = 0;


		return ans;
	}
}