Problem:
入場料金

アイヅ温泉には、浴場とプールがあり、浴場を利用するには入浴券を、プールを利用するにはプール券をそれぞれ買う必要があります。これらの券の値段は、日によって変わるかもしれません。また、アイヅ温泉には以下のようなルールがあります。

券は購入当日１回の利用に限り有効。

「入浴券５枚以上かつプール券２枚以上」でまとめて買うと、すべての券が２割引になる。

温泉好きの貞吉さんとその友人たちは、アイヅ温泉に毎日のように通っています。彼らは皆気まぐれで、日によって使う枚数は異なります。アイヅ温泉には割引ルールがあるため、グループで協力して上手に買えば、合計料金を安く済ますことができるかもしれません。

入浴券とプール券の料金、使用する入浴券の枚数とプール券の枚数が入力として与えられたとき、最も安い合計料金を出力するプログラムを作成してください。ただし、使用する枚数より多く券を買うことで合計料金が安くなるなら、買った券すべてを使わなくともよいものとします。

入力

入力は以下の形式で与えられる。

N
x1 y1 b1 p1
x2 y2 b2 p2
:
xN yN bN pN

１行目のN(1 ≤ N ≤ 365)は料金を計算したい日数である。続くN行に、i日目の入浴券の料金xi(100 ≤ xi ≤ 1000)、プール券の料金yi(100 ≤ yi ≤ 1000)、使用する入浴券の枚数bi(0 ≤ bi ≤ 6)、使用するプール券の枚数pi(0 ≤ pi ≤ 6)が与えられる。入浴券とプール券共に料金は50円刻みである。

出力

それぞれの日について最も安い合計料金を１行に出力する。

入力例 1

2
100 100 1 1
1000 500 5 2

出力例 1

200
4800

入力例 2

5
500 500 1 1
500 500 5 2
1000 100 0 6
1000 100 6 0
100 1000 0 0

出力例 2

1000
2800
600
4960
0

Solution in JAVA (judge verdict: Accepted)

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner stdIn = new Scanner(System.in);
		int N = stdIn.nextInt();
		int[][] X = new int[N][4];
		
		for(int i = 0; i < N; i++) {
			for(int j = 0; j < 4; j++) {
				X[i][j] = stdIn.nextInt();
			}
		}
		
		for(int i = 0; i < N; i++) {
			if(X[i][2] - 5 > 0) {
				if(X[i][3] - 2 > 0) {
					int ans = (int) ((X[i][0]*X[i][2] + X[i][1] * X[i][3]) * 0.8);
					System.out.println(ans);
				}
				else {
					if((X[i][0] * X[i][2] + X[i][1] * 2) * 0.8 < X[i][0] * X[i][2] + X[i][1] * X[i][3]) {
						int ans = (int) ((X[i][0] * X[i][2] + X[i][1] * 2) * 0.8);
						System.out.println(ans);
					}
					else {
						System.out.println(X[i][0] * X[i][2] + X[i][1] * X[i][3]);
					}
				}
			}
			else if(X[i][3] - 2 > 0) {
				if((X[i][0] * 5 + X[i][1] * X[i][3]) * 0.8 < X[i][0] * X[i][2] + X[i][1] * X[i][3]) {
					int ans = (int) ((X[i][0] * 5 + X[i][1] * X[i][3]) * 0.8);
					System.out.println(ans);
				}
				else {
					System.out.println(X[i][0] * X[i][2] + X[i][1] * X[i][3]);
				}
			}
			else {
				if((X[i][0] * 5 + X[i][1] * 2) * 0.8 < X[i][0] * X[i][2] + X[i][1] * X[i][3]) {
					int ans = (int) ((X[i][0] * 5 + X[i][1] * 2) * 0.8);
					System.out.println(ans);
				}
				else {
					System.out.println(X[i][0] * X[i][2] + X[i][1] * X[i][3]);
				}
			}
		}
	}
		
}