만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

최소 범위 부분집합

시간 제한2초메모리 제한1024 MB

요약
n개의 수에서 k개를 골라 선택한 수들의 최댓값과 최솟값 차이가 가장 작도록 하고, 그 부분집합을 출력합니다.
난이도

보통10점 중 4점

유형
정렬, 슬라이딩 윈도우
정답자
아직 제출이 없습니다

문제

인재 학교에서 울버린은 자비에르 교수의 수업을 자주 힘들어했다. 엄격한 교수는 학생들에게 뛰어난 머리 회전을 요구했고, 학생들의 사고력을 시험하려고 문제를 자주 냈다. 그중 한 문제는 다음과 같았다. nn개의 수로 이루어진 집합에서 크기가 kk인 부분집합을 고르되, 그 부분집합의 최댓값과 최솟값의 차이가 가능한 한 작아지도록 해야 한다.

울버린은 이 문제를 머릿속으로 풀기 싫어서 프로그램을 짜기로 했다. 최근 옛 프로그램 보관함을 살펴보던 그는 이 문제의 구현에 오류가 있다는 것을 발견했다. 프로그램을 다시 짤 시간이 없어서 도움을 청한다. 마그네토가 또다시 지구를 공격한다면, 울버린이 달리 누구를 찾아가겠는가.

입력

첫 줄에 두 정수 nn과 kk가 주어진다 (2≤k≤n≤1000002 \le k \le n \le 100000). nn은 집합의 원소 개수이고, kk는 고를 부분집합의 크기이다. 둘째 줄에는 nn개의 정수 aia_i가 주어진다 (0≤ai≤1090 \le a_i \le 10^9).

출력

원래 집합에 있던 수 중에서 kk개를 골라 공백으로 구분하여 출력한다. 골라낸 수들의 최댓값과 최솟값의 차이는 가능한 한 작아야 한다.

예제2

  1. 예제 1

    입력
    5 4
    3 0 5 1 2
    
    예상 출력
    0 1 2 3
    
  2. 예제 2

    입력
    7 3
    8 8 9 13 1 5 10
    
    예상 출력
    8 8 9