Chips on the Board (Codeforces 1879B)
Tags: Greedy, constructive algorithms

You are given a board of size $$$n \times n$$$ ($$$n$$$ rows and $$$n$$$ colums) and two arrays of positive integers $$$a$$$ and $$$b$$$ of size $$$n$$$.Your task is to place the chips on this board so that the following condition is satisfied for every cell $$$(i, j)$$$:  there exists at least one chip in the same column or in the same row as the cell $$$(i, j)$$$. I. e. there exists a cell $$$(x, y)$$$ such that there is a chip in that cell, and either $$$x = i$$$ or $$$y = j$$$ (or both). The cost of putting a chip in the cell $$$(i, j)$$$ is equal to $$$a_i + b_j$$$. For example, for $$$n=3$$$, $$$a=[1, 4, 1]$$$ and $$$b=[3, 2, 2]$$$. One of the possible chip placements is as follows:  White squares are empty The total cost of that placement is $$$(1+3) + (1+2) + (1+2) = 10$$$.Calculate the minimum possible total cost of putting chips according to the rules above.

Input: The first line contains a single integer $$$t$$$ ($$$1 \le t \le 10^4$$$) — the number of test cases.The first line of each test case contains a single integer $$$n$$$ ($$$1 \le n \le 3 \cdot 10^5$$$).The second line contains $$$n$$$ integers $$$a_1, a_2, \dots, a_n$$$ ($$$1 \le a_i \le 10^9$$$).The third line contains $$$n$$$ integers $$$b_1, b_2, \dots, b_n$$$ ($$$1 \le b_i \le 10^9$$$).The sum of $$$n$$$ over all test cases doesn't exceed $$$3 \cdot 10^5$$$.

Output: For each test case, print a single integer — the minimum possible total cost of putting chips according to the rules.

Note: The first test case of the example is described in the statement.

Sample Inputs:
4
3
1 4 1
3 2 2
1
4
5
2
4 5
2 3
5
5 2 4 5 3
3 4 2 1 5

Sample Outputs:
10
9
13
24

Solution (Python):
n = int(input())
for _ in range(n):
    t = int(input())
    l1 = list(map(int, input().split()))
    l2 = list(map(int, input().split()))
    n1 = min(l1) * t + sum(l2)
    n2 = min(l2) * t + sum(l1)
    print(min(n1, n2))

Solution (Python):
n = int(input())
for i in range(n):
    x = int(input())
    a = list(map(int, input().split()))
    b = list(map(int, input().split()))
    print(min(sum(a) + x * min(b), sum(b) + x * min(a)))

Solution (Python):
t = int(input())
for cute in range(t):
    n = int(input())
    a = list(map(int, input().split(' ')))
    b = list(map(int, input().split(' ')))
    sumA = sum(a) + n * min(b)
    sumB = sum(b) + n * min(a)
    print(min(sumA, sumB))