버블 정렬 Batch
Time limit | Memory limit | # of submissions | # of submitted users | Solved # | Accepted user ratio |
---|---|---|---|---|---|
1000 ms | 64 MiB | 93 | 37 | 16 | 43.24% |
버블 정렬이란, 두 인접한 원소를 검사하여 자리를 바꾸는 방식으로 길이가 $N$인 수열을 정렬하는 알고리즘이다. 버블 정렬은 아래와 같은 단계를 총 $N$번 진행하면 된다.
- 첫 번째 값과 두 번째 값을 비교하여 첫 번째 값이 더 크면 자리를 바꾼다.
- 두 번째 값과 세 번째 값을 비교하여 두 번째 값이 더 크면 자리를 바꾼다.
- …
- $N - 1$번째 값과 $N$번째 값을 비교하여 $N - 1$번째 값이 더 크면 자리를 바꾼다.
세찬이는 버블 정렬의 결과는 당연히 알기에 버블 정렬의 중간 과정을 알아보려고 한다. 하지만 $N$이 매우 크므로 위와 같은 단계를 $K$번 하면 시간이 오래 걸린다. 세찬이를 도와 버블 정렬의 중간 과정을 구하는 프로그램을 작성하여라.
입력 형식
첫 번째 줄에는 $N$과 $K$가 주어진다.
두 번째 줄에는 처음 수열의 상태가 주어진다. 즉, 처음 수열을 이루는 $N$개의 정수가 공백을 사이로 두고 차례대로 주어진다.
출력 형식
위 단계를 $K$번 한 후 수열의 상태를 출력한다.
부분문제
모든 채점 데이터에 대해,
- $N \ge 1$
- $1 \le K \le N$
- 수열의 각 항은 1 이상 1,000,000,000 이하의 정수이다.
부분문제 | 점수 | N | 비고 |
---|---|---|---|
1 | 11 | ≤ 50 | - |
2 | 23 | ≤ 2, 000 | - |
3 | 47 | ≤ 100, 000 | 수열의 각 항은 서로 다르다. |
4 | 19 | ≤ 100, 000 | - |
입력과 출력의 예
입력
4 1
62 23 32 15
출력
23 32 15 62
Problem Source