코테/정렬
[C/C++] 나동빈 두 배열의 원소 교체, 정렬
상똥
2023. 3. 1. 18:25
문제
크기가 N으로 같은 두 배열 A, B가 있다. 이 두 배열의 원소를 서로 최대 K번 바꿀 수 있는데, 배열A의 원소이 총합이 최대가 되도록 원소를 교환한 후 그 총합을 출력하라. 첫 번째 줄에 N과 K가 주어지고 두 번째 줄에 배열A의 원소가 주어지며 세 번째 줄에 배열 B의 원소가 입력된다. (1≤N≤100,000, 0≤K≤N) |
코드
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main() {
int N, K, sum = 0, temp;
cin >> N >> K;
vector<int> A;
vector<int> B;
for (int i = 0; i < N; i++) {
cin >> temp;
A.push_back(temp);
}
for (int i = 0; i < N; i++) {
cin >> temp;
B.push_back(temp);
}
if (K == 0) {
for (int i = 0; i < N; i++)
sum += A[i];
cout << sum;
return 0;
}
else {
sort(A.begin(), A.end());
reverse(B.begin(), B.end());
for (int i = 0; i < N; i++){
if (A[i] < B[i])
A[i] = B[i];
else
break;
}
for (int i = 0; i < N; i++)
sum += A[i];
cout << sum;
return 0;
}
}