만드는 중입니다

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

DDR 체력 관리

면접 대비

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

요약
구간마다 K씩 회복되는 체력(최대 100) 안에서 구간을 연주할지 건너뛸지 골라 얻는 점수의 최댓값을 구합니다.
난이도

보통10점 중 4점

유형
동적 계획법, 구현
정답자
아직 제출이 없습니다

문제

리듬게이머 코더빡은 최근 댄스 댄스 레볼루션(DDR)에 푹 빠져 있다. 이 게임은 곡이 재생될 때 떨어지는 노트에 맞춰 발판을 밟는 게임이다. 체력을 많이 소모하기 때문에 체력 관리가 매우 중요하다.

곡은 NN개의 구간으로 이루어져 있다. 각 구간 ii (1≤i≤N)(1 \leq i \leq N)에 대해 코더빡은 그 구간을 플레이하거나 포기할 수 있다. 구간을 플레이하면 sis_i점을 얻고 체력을 hih_i만큼 소모한다. 구간을 포기하면 점수를 얻지 못하고 체력도 소모하지 않는다.

곡이 시작될 때 코더빡의 체력은 100100이다. 매 구간에 들어가기 전에 체력이 KK만큼 회복된다. 이 회복은 구간을 플레이하거나 포기하는 것과 관계없이 항상 일어난다. 회복 후 체력이 100100을 넘으면 체력은 100100이 된다. 구간을 플레이했을 때 체력이 00 미만으로 떨어지면 코더빡은 그 구간을 포기해야 한다.

하루 종일 DDR을 밟아 기진맥진한 코더빡은 더 이상 체력 관리를 위한 판단을 내릴 수 없다. 코더빡이 좋은 성과를 낼 수 있도록, 그가 얻을 수 있는 최대 점수를 알려주는 프로그램을 작성하시오.

지문에서 언급하지 않은 게임오버 등의 시스템은 이 문제에서 고려하지 않는다.

입력

첫 번째 줄에는 두 정수 NN과 KK가 공백으로 구분되어 주어진다. NN은 곡의 전체 구간의 수를 의미하며, KK는 회복하는 체력의 양이다. (1≤N≤1000;1≤K≤10)(1 \leq N \leq 1000; 1 \leq K \leq 10)

두 번째 줄에는 정수 s1,s2,⋯ ,sNs_1, s_2, \cdots, s_N이 공백으로 구분되어 주어진다. (1≤si≤1000)(1 \leq s_i \leq 1000)

세 번째 줄에는 정수 h1,h2,⋯ ,hNh_1, h_2, \cdots, h_N이 공백으로 구분되어 주어진다. (1≤hi≤100)(1 \leq h_i \leq 100)

출력

코더빡이 얻을 수 있는 최대 점수를 출력한다.

예제2

  1. 예제 1

    입력
    10 10
    1 2 3 4 5 6 7 8 9 10
    9 9 9 9 9 9 9 9 9 9
    
    예상 출력
    55
    
  2. 예제 2

    입력
    5 10
    70 90 80 100 60
    60 60 60 60 60
    
    예상 출력
    190