1026
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 내림차순 정렬을 위한 비교 함수
int compare_desc(const void *a, const void *b) {
// void 포인터를 int 포인터로 형변환
int num1 = *(const int *)a;
int num2 = *(const int *)b;
// num1이 num2보다 크면 양수 반환
if (num1 < num2) {return 1;}
// num1이 num2보다 작으면 음수 반환
else if (num1 > num2) {return -1;}
// 같으면 0 반환
else {return 0;}
}
// 오름차순 정렬을 위한 비교 함수
int compare_asc(const void *a, const void *b) {
// void 포인터를 int 포인터로 형변환
int num1 = *(const int *)a;
int num2 = *(const int *)b;
// num1이 num2보다 크면 음수 반환
if (num1 < num2) {return -1;}
// num1이 num2보다 작으면 양수 반환
else if (num1 > num2) {return 1;}
// 같으면 0 반환
else {return 0;}
}
int main(void){
int len;
scanf("%d", &len);
int arr[2][len];
// 배열 입력
for(int i = 0; i < 2; i++){
for(int j = 0; j < len; j++){
int num;
scanf("%d", &num);
arr[i][j] = num;
}
}
// 첫 번째 배열은 내림차순 정렬
qsort(arr[0], len, sizeof(int), compare_desc);
// 두 번째 배열은 오름차순 정렬
qsort(arr[1], len, sizeof(int), compare_asc);
// 결과 구하기
int sum = 0;
for(int i = 0; i < len; i++){
sum += (arr[0][i] * arr[1][i]);
}
// 출력
printf("%d", sum);
}