반응형
-문제
-코드
#include<stdio.h>
#include<vector>
using namespace std;
vector<int> a;
vector<int> tmp;
void divide(int lt, int rt)
{
int mid, p1, p2, p3;
if (lt<rt)
{
mid = (lt + rt) / 2;
divide(lt, mid);
divide(mid + 1, rt);
p1 = lt;
p2 = mid + 1;
p3 = lt;
while (p1<=mid && p2<=rt)
{
if (a[p1] < a[p2]) tmp[p3++] = a[p1++];
else tmp[p3++] = a[p2++];
}
while(p1<=mid) tmp[p3++] = a[p1++];
while(p2<=rt) tmp[p3++] = a[p2++];
for (int i = lt; i <= rt; i++)
{
a[i] = tmp[i];
}
}
}
int main()
{
int n, k;
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
scanf("%d", &k);
a.push_back(k);
tmp.push_back(0);
}
divide(0,n-1);
for (int i = 0; i < n; i++)
{
printf("%d\n", a[i]);
}
return 0;
}
반응형
'이론 > 코딩테스트' 카테고리의 다른 글
[백준] 2468번 안전 영역 (BFS) (0) | 2022.07.31 |
---|---|
[백준] 1654번 랜선자르기 (이분탐색) (0) | 2022.07.31 |
[백준] 2805번 나무자르기 (이분탐색) (0) | 2022.07.30 |
[백준] 1920번 수 찾기 (이분탐색) (0) | 2022.07.30 |
[백준] 2667번 단지번호붙이기 (BFS) (0) | 2022.07.30 |