https://www.acmicpc.net/problem/1026
1. 재배열할 수 있는 경우는 A뿐이기에 A를 오름차순으로 정렬
2. A의 첫번째 원소는 반드시 최소값이기에 B 배열 중 가장 큰 원소 값을 곱함
3. 한번 곱하는 과정이 나온 B 배열 원소의 인덱스를 저장한 후 true표시
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int N, A, B;
int result = 0;
int cnt = 0;
int a[101];
int b[101];
bool check[51] = {false};
cin >> N;
for (int i = 0; i < N; i++) {
cin >> A;
a[i] = A;
}
for (int i = 0; i < N; i++) {
cin >> B;
b[i] = B;
}
sort(a , a+N);
for (int i = 0; i < N; i++) {
int max = 0;
for (int k = 0; k < N; k++) {
if (max < b[k] && check[k] == false) {
max = b[k];
cnt = k;
}
}
check[cnt] = true;
result += a[i] * max;
}
cout << result;
return 0;
}