Problem:
Score : 300 points

Problem Statement

You've come to your favorite store Infinitesco to buy some ice tea.

The store sells ice tea in bottles of different volumes at different costs.
Specifically, a 0.25-liter bottle costs Q yen, a 0.5-liter bottle costs H yen, a 1-liter bottle costs S yen, and a 2-liter bottle costs D yen.
The store has an infinite supply of bottles of each type.

You want to buy exactly N liters of ice tea. How many yen do you have to spend?

Constraints

1 \leq Q, H, S, D \leq 10^8

1 \leq N \leq 10^9

All input values are integers.

Input

Input is given from Standard Input in the following format:

Q H S D
N

Output

Print the smallest number of yen you have to spend to buy exactly N liters of ice tea.

Sample Input 1

20 30 70 90
3

Sample Output 1

150

Buy one 2-liter bottle and two 0.5-liter bottles. You'll get 3 liters for 90 + 30 + 30 = 150 yen.

Sample Input 2

10000 1000 100 10
1

Sample Output 2

100

Even though a 2-liter bottle costs just 10 yen, you need only 1 liter.
Thus, you have to buy a 1-liter bottle for 100 yen.

Sample Input 3

10 100 1000 10000
1

Sample Output 3

40

Now it's better to buy four 0.25-liter bottles for 10 + 10 + 10 + 10 = 40 yen.

Sample Input 4

12345678 87654321 12345678 87654321
123456789

Sample Output 4

1524157763907942

Solution in Java8 (OpenJDK 1.8.0) (judge verdict: Wrong Answer)

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
    	Scanner in = new Scanner(System.in);
    	double Q = in.nextDouble() * 8;
    	double H = in.nextDouble() * 4;
    	double S = in.nextDouble() * 2;
    	double D = in.nextDouble();

    	double N = in.nextDouble();

    	double P[] = new double[4];
    	int PNUM[] = new int[4];//Pの添え字を格納する
    	for(int cnt = 0;cnt < 4; cnt++){
    		PNUM[cnt] = cnt;
    	}

    	double sum = 0;

    	P[0] = Q;
    	P[1] = H;
    	P[2] = S;
    	P[3] = D;

    	//小さい順にソート
    	for(int cnt = 0; cnt < 4; cnt++){
    		double tmp;
    		int tmp2;
    		for(int cnt2 = cnt + 1; cnt2 < 4; cnt2++){
    			if(P[cnt] > P[cnt2]){
    				tmp = P[cnt];
    				P[cnt] = P[cnt2];
    				P[cnt2] = tmp;
    				tmp2 = PNUM[cnt];
    				PNUM[cnt] = PNUM[cnt2];
    				PNUM[cnt2] = tmp2;
    			}
    		}
    	}

    	double M = N;
    	double youryo = 0.0;

    		for(int cnt = 0;cnt < 4; cnt++){
    			if(PNUM[cnt] == 0){
    				youryo = 0.25;
    				P[cnt] = P[cnt] / 8;
    			}
    			if(PNUM[cnt] == 1){
    				youryo = 0.5;
    				P[cnt] = P[cnt] / 4;
    			}
    			if(PNUM[cnt] == 2){
    				youryo = 1.0;
    				P[cnt] = P[cnt] / 2;
    			}
    			if(PNUM[cnt] == 3){
    				youryo = 2.0;
    			}

    			if(M >= (long)youryo){


    			sum = sum + (P[cnt] * Math.floor(M / youryo));
    			M = Math.floor(M / youryo);

    			if(M % youryo == 0){
    				break;
    			}
    			}


    	}

    	System.out.println((long)sum);

    }
}