반응형
http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=2283&sca=99&sfl=wr_hit&stx=2082
#include <stdio.h>
int ar[500100], cnt, N, ans[500100], anscnt;
void swap(int& rA, int& rB)
{
int tmp = rA; rA = rB; rB = tmp;
}
void heapify()
{
int ci = cnt; //childindex
while (ci > 1 && ar[ci / 2] < ar[ci]) {
swap(ar[ci], ar[ci / 2]);
ci /= 2;
}
}
int pop()
{
int first = ar[1];
swap(ar[1], ar[cnt]);
ar[cnt--] = 0;
int pi = 1, ci = 2;
while (ci <= cnt)
{
if (ar[ci] < ar[ci + 1]) ci++;
if (ar[pi] > ar[ci]) break;
swap(ar[pi], ar[ci]);
pi = ci; ci *= 2;
}
return first;
}
int main()
{
scanf("%d", &N);
for (int i = 0; i < N; i++)
{
scanf(" %d", &ar[++cnt]);
heapify();
}
for (int i = 1; i <= cnt; i++) printf("%d ", ar[i]);
printf("\n");
while (cnt) ans[++anscnt] = pop();
for (int i = anscnt; i > 0; i--) printf("%d ", ans[i]);
printf("\n");
return 0;
}
반응형
'프로그래밍 알고리즘' 카테고리의 다른 글
[정올 2247] 도서관 (0) | 2023.01.07 |
---|---|
[정올 2194] 요플레공장 (1) | 2023.01.07 |
[정올 1972] 정렬(SORT) (1) | 2023.01.07 |
[정올 1912] 미로 탐색 (0) | 2023.01.06 |
[정올 1901] 소수 구하기 (0) | 2023.01.06 |