Line to Cashier (Codeforces 408A)
Tags: Implement, implementation

Little Vasya went to the supermarket to get some groceries. He walked about the supermarket for a long time and got a basket full of products. Now he needs to choose the cashier to pay for the products.There are n cashiers at the exit from the supermarket. At the moment the queue for the i-th cashier already has ki people. The j-th person standing in the queue to the i-th cashier has mi, j items in the basket. Vasya knows that:  the cashier needs 5 seconds to scan one item;  after the cashier scans each item of some customer, he needs 15 seconds to take the customer's money and give him the change. Of course, Vasya wants to select a queue so that he can leave the supermarket as soon as possible. Help him write a program that displays the minimum number of seconds after which Vasya can get to one of the cashiers.

Input: The first line contains integer n (1 ≤ n ≤ 100) — the number of cashes in the shop. The second line contains n space-separated integers: k1, k2, ..., kn (1 ≤ ki ≤ 100), where ki is the number of people in the queue to the i-th cashier.The i-th of the next n lines contains ki space-separated integers: mi, 1, mi, 2, ..., mi, ki (1 ≤ mi, j ≤ 100) — the number of products the j-th person in the queue for the i-th cash has.

Output: Print a single integer — the minimum number of seconds Vasya needs to get to the cashier.

Note: In the second test sample, if Vasya goes to the first queue, he gets to the cashier in 100·5 + 15 = 515 seconds. But if he chooses the second queue, he will need 1·5 + 2·5 + 2·5 + 3·5 + 4·15 = 100 seconds. He will need 1·5 + 9·5 + 1·5 + 3·15 = 100 seconds for the third one and 7·5 + 8·5 + 2·15 = 105 seconds for the fourth one. Thus, Vasya gets to the cashier quicker if he chooses the second or the third queue.

Sample Inputs:
1
1
1

4
1 4 3 2
100
1 2 2 3
1 9 1
7 8

Sample Outputs:
20

100

Solution (Python):
def minimum_time(n, queue_sizes, queue_products):
    min_time = float('inf')
    for i in range(n):
        queue_size = queue_sizes[i]
        queue_product = queue_products[i]
        time = 0
        for j in range(queue_size):
            products = queue_product[j]
            time += products * 5 + 15
        if time < min_time:
            min_time = time
    return min_time
n = int(input())
queue_sizes = list(map(int, input().split()))
queue_products = [list(map(int, input().split())) for _ in range(n)]
min_time = minimum_time(n, queue_sizes, queue_products)
print(min_time)

Solution (Python):
R = lambda : list(map(int, input().split()))
n = int(input())
l = R()
print(min([sum(R()) * 5 + 15 * l[i] for i in range(n)]))

Solution (Python):
n = int(input())
ans = float('inf')
ks = list(map(int, input().split()))
for k in ks:
    ms = list(map(int, input().split()))
    s = 5 * sum(ms) + 15 * k
    ans = min(ans, s)
print(ans)