12724

#include <stdio.h>
#include <stdlib.h>

// 오름차순
int asc_cmp (const void *a, const void *b){
    return *(int *)a - *(int *)b;
}

// 내림차순
int des_cmp (const void *a, const void *b){
    return *(int *)b - *(int *)a;
}

int main(void){
    // 테스트 케이스 입력
    int test_case = 0;
    scanf("%d", &test_case);

    for(int i = 0; i < test_case; i++){
        // 벡터의 정수 개수 
        int num = 0;
        scanf("%d", &num);

        // 벡터1 입력받고 오름차순 정렬
        int *arr1 = (int *)malloc(sizeof(int)*num);
        for(int j = 0; j < num; j++){
            scanf("%d", &arr1[j]);
        }
        qsort(arr1, num, sizeof(int), asc_cmp);

        // 벡터2 입력받고 내림차순 정렬
        int *arr2 = (int *)malloc(sizeof(int)*num);
        for(int j = 0; j < num; j++){
            scanf("%d", &arr2[j]);
        }
        qsort(arr2, num, sizeof(int), des_cmp);

        // 스칼라 곱 구하기
        long long scalar_product = 0;
        for(int j = 0; j < num; j++){
            scalar_product += (long long)arr1[j]*(long long)arr2[j];
        }

        // 출력
        printf("Case #%d: %lld\n", i+1, scalar_product);

        free(arr1);
        free(arr2);
    }
    return 0;
}

+ Recent posts