문제
크기가 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;
}
}
'코테 > 정렬' 카테고리의 다른 글
[C/C++] 프로그래머스스쿨 실패율, 정렬 (0) | 2023.03.08 |
---|---|
[C/C++] 백준 10825, 정렬 (0) | 2023.03.08 |
[C/C++] 나동빈 성적이 낮은 학생 순서대로 출력하기, 정렬 (0) | 2023.03.01 |
[C/C++] 나동빈 위에서 아래로, 정렬 (0) | 2023.03.01 |
[C/C++] 정렬 (0) | 2023.03.01 |