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);

}

 

+ Recent posts