로마의 휴일

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

요약
연속된 휴가 구간을 하나 고르고, 휴가 전날은 일급의 X배, 이후는 그대로 받아 합이 K 이상이 되게 하면서 휴가 길이를 최대로 만든다.
난이도

보통10점 중 6점

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

문제

직장인 로마는 휴가에 맞춰 좋아하는 아이돌의 콘서트에 가고 싶어 한다. 하지만 콘서트 티켓을 구매할 돈이 없어 일을 하며 돈을 모으려고 한다. 동시에 가능한 한 오랫동안 휴가를 다녀오고 싶어 한다.

  • 로마는 NN일 중 한 번만 연속된 기간을 선택하여 휴가를 사용할 수 있다.
  • 휴가를 다녀온 후에는 ii일에 일을 하면 a_ia\_{i}만큼 일급을 받는다.
  • 휴가를 다녀오기 전에는 ii일에 일을 하면 보너스가 적용되어 a_i×Xa\_{i} \times X만큼 일급을 받는다.
  • 휴가 중에는 일을 하여 일급을 받을 수 없으며, 첫날부터 휴가를 다녀올 수 있다.

콘서트 티켓 비용은 후불로 지불할 수 있기 때문에 휴가를 가기 전에 번 돈과 휴가를 갔다 와서 번 돈의 합이 KK 이상이면 된다. 만약 어떠한 방법으로도 티켓을 구매할 수 없다면 휴가를 나가지 않는다.

주어진 일 수 NN, 콘서트 티켓 비용 KK, 일급 보너스 XX, 일급 a_1,a_2,⋯ ,a_Na\_1, a\_2, \cdots, a\_N이 주어질 때 최대 며칠 동안 휴가를 다녀올 수 있는지 프로그램을 작성하자.

입력

첫 번째 줄에 정수 NN, KK, XX가 공백으로 구분되어 주어진다.

두 번째 줄에는 정수 a_1,a_2,⋯ ,a_Na\_1, a\_2, \cdots , a\_N이 공백으로 구분되어 주어진다.

출력

최대 며칠까지 휴가를 다녀올 수 있는 지 출력한다. 만약 휴가를 다녀오지 못한다면 -1을 대신 출력한다.

제한

  • 2≤N≤200,0002 \leq N \leq 200\\,000
  • 1≤K≤1091 \leq K \leq 10^{9}
  • 1≤X≤101 \leq X \leq 10
  • 1≤a_i≤1,0001 \leq a\_i \leq 1\\,000

예제4

  1. 예제 1

    입력
    5 10 2
    2 20 30 1 120
    
    예상 출력
    4
    
  2. 예제 2

    입력
    10 22 2
    10 1 1 1 1 1 1 1 1 10
    
    예상 출력
    8
    
  3. 예제 3

    입력
    11 34 3
    1 1 1 1 1 1 1 1 1 1 1
    
    예상 출력
    -1
    
  4. 예제 4

    입력
    3 30 1
    10 10 10
    
    예상 출력
    -1