https://www.acmicpc.net/problem/1026
제목 : 보물
난이도 : Silver IV
두 배열 A, B의 원소를 하나씩 짝지어 곱 한 수의 합이 최소가 되어야 한다.
그러기 위해선 한 배열에서 제일 작은 수와 다른 배열에서 제일 큰 수를 곱해야 한다.
한쪽 배열은 오름차순으로 정렬하고, 다른쪽 배열은 내림차순으로 정렬해서 각각을 곱하여 더한 수가 최소값이다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int N, num, sum = 0;
cin >> N;
vector<int> A(N, 0), B(N, 0);
for (int i = 0; i < N; i++) {
cin >> A[i];
}
for (int i = 0; i < N; i++) {
cin >> B[i];
}
sort(A.begin(), A.end());
sort(B.rbegin(), B.rend());
for (int i = 0; i < N; i++) {
sum += A[i] * B[i];
}
cout << sum;
}