아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

수영 대회

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

요약
정렬한 수영 기록을 크기가 A 이상 B 이하인 연속 구간으로 나누어, 각 구간의 최대-최소 차이 중 최댓값을 최소로 만든다.
난이도

보통10점 중 7점

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

문제

비트랜디아(Bitlandia)에서는 모든 학생이 오픈 수영 대회에 참가할 수 있다. 사전 등록이 필수가 아니므로, 주최 측은 몇 명이 참가할지 미리 알 수 없다.

올해 참가하는 학생 수는 비트랜디아의 수영 레인 수인 500 000보다 적다. 주최 측은 참가자를 각 그룹에 최소 AA명, 최대 BB명이 되도록 여러 그룹으로 나누기로 했다.

또한 주최 측은 각 그룹에 속한 수영 선수들의 속도를 최대한 비슷하게 맞추어 대회를 더 재미있게 만들고자 한다.

수영 선수들을 그룹으로 나눌 때, 모든 그룹에 대해 '그 그룹에서 가장 느린 선수와 가장 빠른 선수의 기록 차이'의 최댓값이 가능한 한 작아지도록 나누는 프로그램을 작성하시오.

입력

첫째 줄에 세 정수, 즉 대회에 참가한 인원 수 NN과 각 그룹에 들어갈 수 있는 최소 인원 AA, 최대 인원 BB가 주어진다.

이어지는 NN개의 줄에는 각 선수가 거리를 완주하는 데 걸리는 시간 tit_i가 한 줄에 하나씩 주어진다.

입력은 항상 유효한 분할이 존재하도록 주어진다.

출력

모든 그룹에 대해 가장 느린 선수와 가장 빠른 선수의 기록 차이를 구했을 때, 그 최댓값이 될 수 있는 가장 작은 값을 하나의 정수로 출력한다.

제한

  • 2≤N≤1 000 0002 \le N \le 1\,000\,000
  • 2≤A≤B≤500 0002 \le A \le B \le 500\,000
  • 모든 ii에 대해 1≤ti≤1 000 0001 \le t_i \le 1\,000\,000

예제2

  1. 예제 1

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

    입력
    8 3 5
    1
    5
    8
    8
    1
    1
    8
    10
    
    예상 출력
    4