https://www.acmicpc.net/problem/24060
#include <bits/stdc++.h>
#define endl "\n"
using namespace std;
int arr[500002];
int tmp[500002];
int cnt = 0;
void CPP_INIT() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
}
void merge(int left, int right) {
int mid = (left + right) / 2;
int i = left;
int j = mid + 1;
int k = left;
int temp;
while (i <= mid && j <= right) {
if (arr[i] <= arr[j]) {
tmp[k++] = arr[i++];
}
else tmp[k++] = arr[j++];
}
if (i > mid) temp = j;
else temp = i;
while (k <= right)
tmp[k++] = arr[temp++];
for (int i = left; i <= right; i++) {
arr[i] = tmp[i];
cnt--;
if (cnt == 0) cout << tmp[i];
}
}
void merge_sort(int left, int right) {
int mid;
if (left < right) {
mid = (left + right) / 2;
merge_sort(left, mid);
merge_sort(mid + 1, right);
merge(left, right);
}
}
int main(void) {
CPP_INIT();
int input1, input2;
int num;
cin >> input1 >> input2;
cnt = input2;
for (int i = 0; i < input1; i++) {
cin >> num;
arr[i] = num;
}
merge_sort(0, input1 - 1);
if (cnt > 0) cout << -1 << endl;
}
'Algorithm > 백준' 카테고리의 다른 글
C++ 알고리즘 - 백준 17427 약수의 합 2 (0) | 2025.01.19 |
---|---|
C++ 알고리즘 - 백준 4375 1 (모듈러 연산 원칙 관련) (0) | 2025.01.19 |
C++ 알고리즘 - 백준 25501 재귀의 귀재 (참조자 문자열) (0) | 2025.01.17 |
C++ 알고리즘 - 백준 10870 피보나치 수 5 (0) | 2025.01.17 |
C++ 알고리즘 - 백준 11729 하노이 탑 이동순서 (재귀함수) (0) | 2025.01.17 |