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

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

울타리 칠하기

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

요약
길이 k인 원형 울타리에서 n명의 친구가 각자 정해진 길이의 연속 구간을 칠한다. 순서와 위치를 정해 모든 친구가 새로 칠하는 판자의 최소 개수를 최대화하는 x를 구한다.
난이도

어려움10점 중 8점

유형
그리디, 이분 탐색, 수학, 구현
정답자
아직 제출이 없습니다

문제

톰 소여는 폴리 이모 댁을 둘러싼 울타리를 칠하는 힘든 일을 돕도록 nn명의 친구를 설득했다. 울타리는 1번부터 kk번까지 번호가 붙은 kk개의 연속한 널빤지로 이루어져 있고, kk번 널빤지 다음에는 다시 1번 널빤지가 온다.

톰의 친구들은 매우 까다로워서, ii번째 친구는 정확히 aia_i개의 연속한 널빤지로 이루어진 구간을 칠할 수 있을 때에만 칠하기에 참여하겠다고 한다. 톰에게는 붓이 하나뿐이므로 친구들은 차례대로 칠하고, 맡은 구간 전체를 한 번에 칠한다. 톰이 할 일은 친구들을 부를 순서를 정하고, 각 친구가 칠할 연속한 널빤지의 개수를 정하는 것뿐이다.

톰의 친구들은 각자 아직 칠해지지 않은 널빤지든 앞선 친구가 이미 칠한 널빤지든 상관없이 칠할 준비가 되어 있다. 그래도 친구들은 아직 칠해지지 않은 널빤지를 칠할 때 더 즐거워한다. 톰은 수 xx를 정하고 각 친구가 적어도 xx개의 아직 칠해지지 않은 널빤지를 칠하도록 울타리 구간을 배분하려 한다. 톰은 친구들을 아끼기 때문에 모두가 칠하기에서 최대한 즐거움을 얻기를 바라므로, xx를 최대화하려 한다.

톰이 친구들에게 얼마나 많은 즐거움을 줄 수 있는지 알아내도록 돕자.

입력

입력 파일의 첫째 줄에는 두 정수 nn (1≤n≤1051 \le n \le 10^5)과 kk (1≤k≤1091 \le k \le 10^9)가 들어 있다. 다음 줄에는 nn개의 정수, 즉 aia_i (1≤ai≤k1 \le a_i \le k)가 들어 있다.

출력

최대로 가능한 xx의 값을 한 개의 수로 출력한다.

힌트

첫 번째 예제에서 x=5x = 5이다. 한 친구가 다섯 개보다 많은 널빤지를 칠하기를 원하지 않기 때문이다. 그가 먼저 와서 다섯 개를 칠하면, 아직 칠해지지 않은 널빤지 10개가 톰의 두 번째 친구에게 돌아간다. 남은 85개의 널빤지는 톰이 직접 칠해야 한다.

두 번째 예제에서 x=2x = 2에 도달하는 방법의 예는 다음과 같다. 먼저 세 번째 친구가 4번부터 6번까지의 널빤지를 칠한다 (아직 칠해지지 않은 널빤지 3개). 그다음 네 번째 친구가 1번부터 5번까지의 널빤지를 칠한다 (아직 칠해지지 않은 널빤지 3개). 그다음 두 번째 친구가 1번부터 8번까지의 널빤지를 칠한다 (아직 칠해지지 않은 널빤지 2개). 마지막으로 첫 번째 친구가 6번부터 10번까지와 1번부터 2번까지의 널빤지를 칠한다 (아직 칠해지지 않은 널빤지 2개인데, 울타리가 원형으로 이어져 있어 이 널빤지들이 연속한 구간을 이룬다는 점에 주목하자).

예제2

  1. 예제 1

    입력
    2 100
    5 10
    
    예상 출력
    5
    
  2. 예제 2

    입력
    4 10
    7 8 3 5
    
    예상 출력
    2