만드는 중입니다

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

자주 타는 여행객

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

요약
매달 비행 횟수가 주어질 때, 연속된 m개월마다 최소 k편을 유료로 타야 하는 조건에서 유료 항공편의 최소 개수를 구합니다.
난이도

보통10점 중 6점

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

문제

항공사가 여행객에게 무료 항공편을 제공하는 특이한 신규 보상 프로그램을 운영한다.

프로그램은 두 정수 mm과 kk로 정해진다. 연속된 임의의 mm개월 동안 여행객은 그 기간의 항공편 중 적어도 kk개에 대해 요금을 내야 한다. 그 기간의 항공편이 kk개보다 적으면 그 항공편 전부에 대해 요금을 낸다. 그 기간의 나머지 항공편은 무료다. 이 조건은 첫 항공편보다 먼저 시작하는 mm개월 구간에도 똑같이 적용된다.

앞으로 연속된 nn개월 동안 매달 탈 항공편 수가 일정표로 주어진다. 요금을 내야 하는 항공편의 최소 개수를 구하라.

입력

첫 줄에 세 정수 nn, mm (1≤n,m≤2×1051 \le n,m \le 2 \times 10^5), kk (1≤k≤1091 \le k \le 10^9)가 주어진다. nn은 항공편 일정이 잡힌 연속 개월 수이고, mm과 kk는 보상 프로그램의 매개변수다. 이어지는 nn개의 줄에는 각각 정수 ff (1≤f≤1091 \le f \le 10^9)가 한 개씩 주어지며, ff는 그 달에 탈 예정인 항공편 수다.

출력

요금을 내야 하는 예정 항공편 수의 최솟값을 정수 하나로 출력한다.

예제1

  1. 예제 1

    입력
    8 3 2
    3
    1
    4
    1
    5
    9
    2
    6
    
    예상 출력
    8