Memo
로직 설명
•
B에 있는 수를 재배열하면 안 된다고 나와있지만, S를 구하기 위해서 B의 순서는 중요하지 않기 때문에, A는 오름차순 정렬, B는 내림차순 정렬을 하여 S의 최소값을 구해낼 수 있습니다.
Code
제출 날짜
@5/16/2021
메모리
2020 KB
시간
0 ms
#include <iostream>
#include <vector>
#include <algorithm>
int N;
std::vector<int> A;
std::vector<int> B;
void io_faster()
{
std::ios_base::sync_with_stdio(false);
std::cin.tie(0);
std::cout.tie(0);
}
void input()
{
io_faster();
std::cin >> N;
A.resize(N);
B.resize(N);
for (int i = 0 ; i < N ; i++)
std::cin >> A[i];
for (int i = 0 ; i < N ; i++)
std::cin >> B[i];
}
bool compare(int a, int b)
{
return (a > b);
}
void solve()
{
int ans = 0;
std::sort(A.begin(), A.end());
std::sort(B.begin(), B.end(), compare);
for (int i = 0 ; i < N ; i++)
ans += (A[i] * B[i]);
std::cout << ans;
}
int main()
{
input();
solve();
return (0);
}
C++
복사