아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

자판기

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

요약
간식 가격과 재고, 예산이 주어질 때, 어떤 종류를 사면 그보다 번호가 작고 재고가 남은 모든 종류가 하나씩 덤으로 나온다. 받는 간식 가치 합의 최댓값을 구한다.
난이도

어려움10점 중 8점

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

문제

어느 자판기가 11번부터 nn번까지 번호가 매겨진 nn가지 종류의 과자를 판매한다. ii번 과자의 가격은 cic_i이고, 자판기에는 현재 ii번 과자가 lil_i개 들어 있다.

이 자판기는 고장이 나 있다. ii번 과자를 하나 구매하면(재고가 11개 이상 남아 있는 종류만 구매할 수 있다) 자판기는 cic_i만큼의 돈을 받은 뒤, 그 과자와 함께 재고가 남아 있는 1,2,…,i−11, 2, \ldots, i-1번의 모든 종류에서 과자를 하나씩 더 내보낸다. 11번부터 i−1i-1번 중 이미 품절된 종류는 그냥 건너뛴다. 이렇게 나온 과자(직접 구매한 것과 덤으로 나온 것 모두)는 해당 종류의 남은 재고를 각각 11개씩 줄인다.

처음에 kk만큼의 돈을 가지고 있고, 원하는 순서로 계속 과자를 구매할 수 있으며, 돈을 모두 쓸 필요는 없다. 지출이 kk를 넘지 않도록 하면서 얻을 수 있는 과자들의 가격 합(직접 산 것과 덤 모두 포함)의 최댓값을 구하여라.

입력

첫째 줄에 두 정수 nn과 kk가 주어진다 (1≤n≤40, 1≤k≤64000)(1 \le n \le 40,\ 1 \le k \le 64000). 각각 과자 종류의 수와 가지고 있는 돈의 양이다.

둘째 줄에 nn개의 정수 c1,c2,…,cnc_1, c_2, \ldots, c_n이 주어진다 (1≤ci≤40)(1 \le c_i \le 40). 각 종류의 가격이다.

셋째 줄에 nn개의 정수 l1,l2,…,lnl_1, l_2, \ldots, l_n이 주어진다 (0≤li≤40)(0 \le l_i \le 40). 자판기에 들어 있는 각 종류의 개수이다.

출력

kk 이하의 돈만 사용하여 얻을 수 있는 과자 가격 합의 최댓값을 정수 하나로 출력한다.

참고

첫 번째 예제에서는 먼저 66번 과자를 산다(가격 c6=2c_6 = 2 지불). 그러면 자판기가 1,2,4,51, 2, 4, 5번 과자도 하나씩 내보낸다(33번은 품절이라 건너뛴다). 이어서 44번 과자를 산다(가격 c4=5c_4 = 5 지불). 그러면 22번 과자가 하나 더 나온다. 두 번의 구매에 든 돈은 2+5=7≤82 + 5 = 7 \le 8이고, 얻은 과자들의 가격 합은 3030이다.

예제2

  1. 예제 1

    입력
    6 8
    7 2 3 5 7 2
    1 3 0 3 2 1
    
    예상 출력
    30
    
  2. 예제 2

    입력
    1 5
    4
    3
    
    예상 출력
    4