문제 보기 - 버블 정렬 (OJUZ10_bubblesort)

시간 제한 메모리 제한 제출 횟수 통과한 사람 수 비율
1000 ms 64 MiB 79 16 20.25%

버블 정렬이란, 두 인접한 원소를 검사하여 자리를 바꾸는 방식으로 길이가 N인 수열을 정렬하는 알고리즘이다. 버블 정렬은 아래와 같은 단계를 총 N번 진행하면 된다.

  • 첫 번째 값과 두 번째 값을 비교하여 첫 번째 값이 더 크면 자리를 바꾼다.
  • 두 번째 값과 세 번째 값을 비교하여 두 번째 값이 더 크면 자리를 바꾼다.
  • N - 1번째 값과 N번째 값을 비교하여 N - 1번째 값이 더 크면 자리를 바꾼다.

세찬이는 버블 정렬의 결과는 당연히 알기에 버블 정렬의 중간 과정을 알아보려고 한다. 하지만 N이 매우 크므로 위와 같은 단계를 K번 하면 시간이 오래 걸린다. 세찬이를 도와 버블 정렬의 중간 과정을 구하는 프로그램을 작성하여라.

입력 형식

첫 번째 줄에는 NK가 주어진다.

두 번째 줄에는 처음 수열의 상태가 주어진다. 즉, 처음 수열을 이루는 N개의 정수가 공백을 사이로 두고 차례대로 주어진다.

출력 형식

위 단계를 K번 한 후 수열의 상태를 출력한다.

부분문제

모든 채점 데이터에 대해,

  • N ≥ 1
  • 1 ≤ K ≤ 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