만드는 중입니다

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

입대

면접 대비

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

요약
날마다 봉사 점수가 주어지고 헌혈 후 D일 동안 봉사와 헌혈을 할 수 없습니다. 합계 M점 이상을 모으는 최소 헌혈 횟수를 구합니다.
난이도

보통10점 중 5점

유형
동적 계획법, 누적 합, 그리디
정답자
아직 제출이 없습니다

문제

드디어 병역의 의무를 질 나이가 된 용진이는 선진병영을 선도하는 대한민국 공군병 모집에 지원하려고 한다. 합격하려면 가산점이 필요한데, 최근 공군의 인기가 높아져서 봉사활동 또는 헌혈로 MM점 이상의 가산점을 모아야 한다.

공군 지원일까지 NN일이 남았으며, 그중 ii일에는 sis_i점의 가산점을 얻을 수 있는 봉사활동에 참여할 수 있다. 헌혈은 11일부터 NN일까지 아무 날에나 할 수 있으며, 한 번 헌혈하면 AA점의 가산점을 얻는다. 다만 헌혈하면 충분히 쉬기 위해 헌혈한 날을 포함하여 그 이후 DD일 동안은 헌혈하거나 봉사활동에 참여할 수 없다.

헌혈이 무서운 용진이는 헌혈을 최대한 적게 하면서 가산점을 MM점 이상 모으려고 한다. 공군병 모집 마감일까지 MM점 이상의 가산점을 모으는 데 필요한 최소 헌혈 횟수를 구해 보자.

입력

첫 번째 줄에 공군병 모집 마감일까지 남은 날짜 NN과 합격하는 데 필요한 가산점 MM이 공백으로 구분되어 주어진다. (1≤N≤10001 \le N \le 1000, 1≤M≤1071 \le M \le 10^7)

두 번째 줄에 날짜마다 봉사활동에 참여해 얻을 수 있는 가산점 s1,⋯ ,sNs_1, \cdots, s_N이 공백으로 구분되어 주어진다. (1≤si≤10001 \le s_i \le 1000)

세 번째 줄에 헌혈해서 얻을 수 있는 가산점 AA와 헌혈 후 휴식이 필요한 일수 DD가 공백으로 구분되어 주어진다. (1≤A≤100001 \le A \le 10000, 1≤D≤N1 \le D \le N)

출력

최소 MM점 이상의 가산점을 모으는 데 필요한 최소 헌혈 횟수를 출력한다.

어떻게 해도 MM점 이상의 가산점을 모을 수 없다면 -1을 출력한다.

예제2

  1. 예제 1

    입력
    5 34
    1 4 8 6 3
    10 2
    
    예상 출력
    2
    
  2. 예제 2

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