입대

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

요약
날짜별 봉사활동 가산점이 주어지고 헌혈은 A점을 주며 이후 D일 동안 활동이 막힐 때, M점을 넘기 위한 최소 헌혈 횟수를 구한다.
난이도

보통10점 중 6점

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

문제

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

현재 공군 지원일까지는 NN일이 남았으며, 그중 ii일에는 s_is\_i점의 가산점을 얻을 수 있는 봉사활동에 참여할 수 있다. 헌혈은 11일부터 NN일까지 아무 날짜에 할 수 있으며, 헌혈하는 경우 AA점의 가산점을 획득한다. 단, 헌혈을 하는 경우 충분한 휴식을 위해 헌혈한 날을 포함하여 헌혈 이후 DD일 동안 헌혈하거나 봉사활동에 참여할 수 없다.

헌혈이 무서웠던 용진이는 헌혈을 최대한 적게 하며 가산점을 MM점 이상 모으고자 한다. 용진이를 도와 공군병 모집 마감일까지 MM점 이상의 가산점을 모으기 위한 최소 헌혈 횟수를 구해주자.

입력

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

두 번째 줄에 날짜마다 봉사활동에 참여해 얻을 수 있는 가산점을 의미하는 NN개의 정수 s_1,⋯ ,s_Ns\_1,\cdots,s\_N이 공백으로 구분되어 주어진다. (1≤s_i≤1,000)(1 \le s\_i \le 1\\,000)

세 번째 줄에 헌혈해서 얻을 수 있는 가산점을 의미하는 정수 AA와 헌혈 후 휴식이 필요한 일수 DD가 공백으로 구분되어 주어진다. (1≤A≤10,000;(1 \le A \le 10\\,000; 1≤D≤N)1 \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