#include <string>
#include <vector>
#include <iostream>
#include <cmath>
#include <map>
#include <algorithm>
using namespace std;
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
int N;
cin >> N;
vector<int> A(N);
vector<int> B(N);
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.begin(), B.end());
int ans=0;
for(int i=0;i<N;i++)
{
ans+=B[i]*A[(N-1)-i];
}
cout << ans;
return 0;
}
- 원리
: 어차피 각 A의 최소값xB의 최대값
을 해주면 곱이 최소가 되니 둘다 정렬해서 곱하자
- 로직
1) A,B배열 모두 정렬
2) A[i] * B[(N-1)-i]
로 최대와 최소를 곱한다