There Are Two Types Of Burgers (Codeforces 1207A)
Tags: Greedy, brute force

There are two types of burgers in your restaurant — hamburgers and chicken burgers! To assemble a hamburger you need two buns and a beef patty. To assemble a chicken burger you need two buns and a chicken cutlet. You have $$$b$$$ buns, $$$p$$$ beef patties and $$$f$$$ chicken cutlets in your restaurant. You can sell one hamburger for $$$h$$$ dollars and one chicken burger for $$$c$$$ dollars. Calculate the maximum profit you can achieve.You have to answer $$$t$$$ independent queries.

Input: The first line contains one integer $$$t$$$ ($$$1 \le t \le 100$$$) – the number of queries.The first line of each query contains three integers $$$b$$$, $$$p$$$ and $$$f$$$ ($$$1 \le b, ~p, ~f \le 100$$$) — the number of buns, beef patties and chicken cutlets in your restaurant.The second line of each query contains two integers $$$h$$$ and $$$c$$$ ($$$1 \le h, ~c \le 100$$$) — the hamburger and chicken burger prices in your restaurant.

Output: For each query print one integer — the maximum profit you can achieve.

Note: In first query you have to sell two hamburgers and three chicken burgers. Your income is $$$2 \cdot 5 + 3 \cdot 10 = 40$$$.In second query you have to ell one hamburgers and two chicken burgers. Your income is $$$1 \cdot 10 + 2 \cdot 12 = 34$$$.In third query you can not create any type of burgers because because you have only one bun. So your income is zero.

Sample Inputs:
3
15 2 3
5 10
7 5 2
10 12
1 100 100
100 100

Sample Outputs:
40
34
0

Solution (Python):
t = eval(input())
for i in range(t):
    (b, p, f) = map(int, input().split())
    (h, c) = map(int, input().split())
    sum1 = 0
    if h >= c:
        if b >= 2 * p:
            sum1 += p * h
            b -= p * 2
        else:
            sum1 += b // 2 * h
            b -= b // 2 * 2
        if b >= 2:
            sum1 += c * min(b // 2, f)
    else:
        if b >= f * 2:
            sum1 += f * c
            b -= f * 2
        else:
            sum1 += b // 2 * c
            b -= b // 2 * 2
        if b >= 2:
            sum1 += h * min(b // 2, p)
    print(sum1)

Solution (Python):
def i():
    (j, *k) = map(int, input().split())
    j //= 2
    s = list(map(int, input().split()))
    ii = 0 if s[0] > s[1] else 1
    tp = min(j, k[ii])
    j -= tp
    c = s[ii] * tp
    tp = min(j, k[ii - 1])
    j -= tp
    c += s[ii - 1] * tp
    ''
    return str(c)
t = int(input())
a = []
for _ in range(t):
    a.append(i())
print('\n'.join(a))

Solution (Python):
R = lambda : map(int, input().split())
(n,) = R()
for _ in [0] * n:
    (b, *a) = R()
    ((h, p), (c, f)) = sorted(zip(R(), a))
    m = min(b // 2, f)
    print(m * c + min(p, b // 2 - m) * h)