만드는 중입니다

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

통금 시간

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

요약
학생들이 최대 d개 방까지 뛰거나 숨은 뒤 감독관이 각 방의 인원을 셉니다. 두 감독관 중 b명과 다른 방을 더 많이 적는 쪽의 횟수를 최소화하는 값을 구합니다.
난이도

어려움10점 중 9점

유형
이분 탐색, 누적 합, 그리디
정답자
아직 제출이 없습니다

문제

어떤 정보학교의 교관들이 학생들을 재운다. 집에는 방이 nn개 있고, 각 방에는 정확히 bb명의 학생이 자야 한다. 그러나 통금 시간에 많은 학생이 배정된 방에 있지 않다. 방은 1번부터 nn번까지 번호가 붙은 일렬로 놓여 있다. 처음에 ii번 방에는 aia_i명의 학생이 있다. 모든 학생은 집 안 어딘가에 있으므로 a1+a2+⋯+an=nba_1 + a_2 + \cdots + a_n = nb이다. 또한 집에는 pp명의 교관이 살고 있다 (p≤2p \le 2).

단속 과정은 다음과 같다. 교관 한 명은 1번 방 근처에서 출발해 nn번 방 쪽으로 이동한다. 교관이 한 명 더 있다면, 그 교관은 nn번 방 근처에서 출발해 1번 방 쪽으로 이동한다. 각 교관은 현재 방을 처리한 뒤 다음 방으로 넘어간다. 교관이 두 명이면 두 명은 동시에 방에 들어가고 동시에 움직인다. nn이 홀수이고 교관이 두 명이면 가운데 방은 첫 번째 교관만 처리한다. 모든 방을 처리하면 과정이 끝난다.

교관은 방을 처리할 때 방 안의 학생 수를 세고, 불을 끈 뒤 방을 잠근다. 학생 수가 bb와 다르면 그 방 번호를 수첩에 적는다. 교관은 방에 누가 있는지는 신경 쓰지 않고 학생 수만 본다.

교관이 방 안에 있는 동안 학생들은 잠기지 않았고 처리 중이 아닌 방들 사이를 뛰어다닐 수 있다. 한 학생은 최대 dd개의 방까지 이동할 수 있다. 즉 방 번호 차이가 dd 이하인 방으로 옮겨 갈 수 있다. 또한 뛴 뒤에(또는 뛰는 대신) 각 학생은 자신이 있는 방의 침대 밑에 숨을 수 있다. 숨은 학생은 교관이 세지 않는다. 한 방에 몇 명이든 동시에 숨을 수 있다.

형식으로 정리하면 다음과 같다.

  • 통금이 발표된다. ii번 방에 aia_i명이 있다.
  • 각 학생은 처음 있던 방에서 최대 dd개 떨어진 방으로 뛰거나 제자리에 머문다. 그다음 각 학생은 선택적으로 숨을 수 있다.
  • 교관이 1번 방에 들어간다 (교관이 두 명이면 nn번 방에도 들어간다). 학생 수를 세고 방을 잠근다. 잠근 뒤에는 누구도 그 방에 들어가거나 나올 수 없다.
  • 2번 방부터 nn번 방까지 (교관이 두 명이면 2번 방부터 n−1n-1번 방까지) 있는 각 학생은 현재 방에서 최대 dd개 떨어진 방으로 뛰거나 제자리에 머문다. 각 학생은 선택적으로 숨을 수 있다.
  • 교관이 다음 방으로 이동한다 (1번에서 2번 방으로, 교관이 두 명이면 nn번에서 n−1n-1번 방으로도 이동한다).
  • 모든 방을 처리할 때까지 이 과정을 반복한다.

xix_i는 ii번째 교관이 학생 수를 bb와 다르게 센 방의 개수이다. 학생들은 교장이 민원을 하나만 듣는다는 것을 알고 있으므로 xix_i의 최댓값을 가능한 한 작게 만들려 한다. 학생들이 최적 전략을 쓸 때 이 값을 구하라.

입력

첫 줄에 네 정수 pp, nn, dd, bb가 주어진다 (1≤p≤21 \le p \le 2, 2≤n≤100 0002 \le n \le 100\,000, 1≤d≤n−11 \le d \le n - 1, 1≤b≤10 0001 \le b \le 10\,000). 각각 교관의 수, 방의 수, 학생이 뛸 수 있는 거리, 방마다 정해진 학생 수이다.

둘째 줄에는 nn개의 정수 a1,a2,…,ana_1, a_2, \ldots, a_n (0≤ai≤1090 \le a_i \le 10^9)이 주어진다. aia_i는 통금이 발표되기 전 ii번 방의 학생 수이다.

a1+a2+⋯+an=nba_1 + a_2 + \cdots + a_n = nb가 성립함이 보장된다.

출력

학생들이 최적 전략을 쓸 때 xix_i의 최댓값이 가질 수 있는 최솟값을 정수 하나로 출력한다.

힌트

첫 번째 예제에서 학생들은 교관이 1번 방에 들어오기 전에 자기 방에 도달할 만큼 빠르게 뛸 수 있다. 따라서 답은 0이다.

두 번째 예제에서 교관은 적어도 한 방을 수첩에 적는다. 최적 전략 중 하나는 다음과 같다. 교관이 1번 방에 들어오기 전에 5번 방에 있던 학생 10명이 2번 방으로, 10명이 3번 방으로, 10명이 4번 방으로 뛴다. 그다음 2, 3, 4번 방에서 학생 한 명씩 숨고, 5번 방에서는 두 명이 숨는다. 이후 학생들은 아무것도 하지 않는다. 이렇게 하면 1번 방만 수첩에 적힌다.

세 번째 예제에서 앞의 세 방은 첫 번째 교관이, 뒤의 두 방은 두 번째 교관이 처리한다. 최적 전략 중 하나는 다음과 같다. 먼저 5번 방의 학생 세 명이 4번 방으로 뛴다. 다음 단계에서 그중 두 명이 3번 방으로 뛰고, 그중 한 명이 숨는다. 첫 번째 교관은 2번 방을 적고, 두 번째 교관은 아무것도 적지 않는다.

네 번째 예제에서 최적 전략 중 하나는 다음과 같다. 먼저 1번 방의 학생이 모두 숨고, 2번 방의 학생이 모두 3번 방으로 뛴다. 다음 단계에서 3번 방의 학생 한 명이 4번 방으로 뛰고, 5명이 숨는다. 첫 번째 교관은 1번과 2번 방을, 두 번째 교관은 5번과 6번 방을 적는다.

예제4

  1. 예제 1

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

    입력
    1 5 3 10
    5 1 1 1 42
    
    예상 출력
    1
    
  3. 예제 3

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

    입력
    2 6 1 2
    3 8 0 1 0 0
    
    예상 출력
    2