옛날 옛적에 수학이 항상 큰 골칫거리였던 나라가 있었다. 이 나라의 국왕 김지민은 다음과 같은 문제를 내고 큰 상금을 걸었다.
길이가 N인 정수 배열 A와 B가 있다. 다음과 같이 함수 S를 정의하자.
S = A[0]B[0] + … + A[N-1]B[N-1]
S의 값을 가장 작게 만들기 위해 A의 수를 재배열하자. 단, B에 있는 수는 재배열하면 안 된다.
S의 최솟값을 출력하는 프로그램을 작성하시오.
S의 값이 최솟값이 되기 위해서는 (작은 수) * (큰 수) 의 곲으로 이루어져야 한다. 따라서 A는 오름차 순으로 정렬하고 B는 내림차 순으로 정렬하여 각각 인덱스 숫자가 같은 것끼리 곲하여 합하면 S의 최솟값이 나온다. B에 있는 수는 재배열하면 안된 다고 했지만, 사실 A만 정렬하여 B와 맵핑되도록 하더라도 사실 B의 입장에서는 맵핑된 숫자가 바뀌는 것이 B가 정렬되었다고도 생각될 수 있기 때문에 B를 정렬한 것과 정렬하지 않은 것을 구분할 수 없는 상황이다. 따라서 A와 B를 정렬하여도 괜찮다.
count = int(input())
a = list(map(int,input().split()))
b = list(map(int, input().split()))
a.sort()
b.sort()
result = 0
for i in range(count):
result += a[i]*b[i]
print(result)