https://www.acmicpc.net/problem/24060
24060번: 알고리즘 수업 - 병합 정렬 1
첫째 줄에 배열 A의 크기 N(5 ≤ N ≤ 500,000), 저장 횟수 K(1 ≤ K ≤ 108)가 주어진다. 다음 줄에 서로 다른 배열 A의 원소 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 109)
www.acmicpc.net
N, K = map(int, input().split())
A = list(map(int, input().split()))
trr = [0] * (N + 1)
cnt = ans = 0
def mergeSort(s, e):
global cnt, ans
if s >= e:
return
mid = (s + e) // 2
mergeSort(s, mid)
mergeSort(mid + 1, e)
if cnt >= K:
return
i, j, k = s, mid + 1, s
while i <= mid and j <= e:
if A[i] <= A[j]:
trr[k] = A[i]
i += 1
else:
trr[k] = A[j]
j += 1
k += 1
while i <= mid:
trr[k] = A[i]
i += 1
k += 1
while j <= e:
trr[k] = A[j]
j += 1
k += 1
for i in range(s, e + 1):
A[i] = trr[i]
cnt += 1
if cnt == K:
ans = A[i]
return
mergeSort(0, N - 1)
if cnt < K:
print("-1")
else:
print(ans)
'Coding > 백준 온라인 저지 (Baekjoon Online Judge)' 카테고리의 다른 글
백준 온라인 저지(Baekjoon Online Judge) - 18406 : 럭키 스트레이트 (0) | 2023.05.10 |
---|---|
백준 온라인 저지(Baekjoon Online Judge) - 2393 : Rook (0) | 2023.05.10 |
백준 온라인 저지(Baekjoon Online Judge) - 2745 : 진법 변환 (0) | 2023.04.12 |
백준 온라인 저지(Baekjoon Online Judge) - 27323 : 직사각형 (0) | 2023.04.12 |
백준 온라인 저지(Baekjoon Online Judge) - 18870 : 좌표 압축 (0) | 2023.04.12 |