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

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

SHOW ME THE DUNGEON

면접 대비

시간 제한2초메모리 제한512 MB

요약
마을 방문 순서를 정해 몬스터를 처치할 때 드는 체력은 방문한 마을 공격력의 합이며, 체력 K 안에서 해방할 수 있는 주민 수의 최댓값을 구한다.
난이도

보통10점 중 5점

유형
완전 탐색, 백트래킹, 그리디, 동적 계획법
정답자
아직 제출이 없습니다

문제

올 여름 출시된 RPG 게임 "SHOW ME THE DUNGEON"은 주인공 시루가 몬스터에게 침략당한 마을을 구하는 내용의 게임이다. 배경이 되는 나라는 0,1,2,⋯ ,N0, 1, 2, \cdots, N번의 번호가 붙어있는 N+1N+1개의 마을로 이루어져 있다. 00번 마을과 1,2,⋯ ,N1, 2, \cdots, N번 마을을 오갈 수 있는 도로가 존재하고 이 밖의 도로는 존재하지 않는다. 즉, NN개의 도로가 존재한다.

게임이 시작하면 시루는 00번 마을에 위치하게 되며, 00번 마을을 제외한 1,2,⋯ ,N1, 2, \cdots, N번 마을에는 몬스터가 각각 한 마리씩 있다. 시루는 마을을 방문할 때 도로를 통해 이동하며, 어떤 마을에서 다른 마을로 이동하기 위해서는 00번 마을을 거쳐야만 한다. 시루는 몇 개의 마을을 선택해 적당한 순서로 방문해 몬스터와 싸울 것이다.

ii번째 마을에 있는 몬스터의 공격력은 A_iA\_i이고 해당 마을에 P_iP\_i명의 주민이 있다. 시루는 어떤 마을을 방문하면 몬스터와 싸운 다음 마을에 있는 주민을 해방시킨다. 시루의 초기 체력은 KK이고, 마을 ii를 방문하기 전에 마을 t_1,t_2,⋯ ,t_kt\_1, t\_2, \cdots, t\_k를 방문했다면, 마을 ii에서 몬스터와 싸울 때 A_t_1+A_t_2+⋯+A_t_k+A_iA\_{t\_1} + A\_{t\_2} + \cdots + A\_{t\_k} + A\_i만큼의 체력을 소모한다. 시루의 체력이 00보다 작아지는 경우, 주민을 해방시키지 못하고 게임이 종료된다.

모든 마을의 주민을 해방시키는 것은 불가능할 수 있기 때문에, 시루는 체력을 최대 KK만큼만 소모하면서 최대한 많은 주민을 해방시키려고 한다. 시루가 해방시킬 수 있는 주민들의 최대 수를 구해보자.

입력

첫째 줄에 몬스터의 수 NN과 시루의 초기 체력 KK가 공백으로 구분되어 주어진다.

둘째 줄에 각 마을에 있는 몬스터의 공격력 A_1,A_2,⋯ ,A_NA\_1, A\_2, \cdots, A\_N이 공백으로 구분되어 주어진다.

셋째 줄에 각 마을에 있는 주민의 수 P_1,P_2,⋯ ,P_NP\_1, P\_2, \cdots, P\_N이 공백으로 구분되어 주어진다.

입력으로 주어지는 모든 값은 정수이다.

출력

시루가 해방시킬 수 있는 주민들의 최대 수를 출력한다. 만약 주민을 해방시킬 수 없다면 0을 출력한다.

제한

  • 1≤N≤201 \leq N \leq 20
  • 1≤K≤100,0001 \leq K \leq 100\\,000
  • 1≤A_i≤100,0001 \leq A\_i \leq 100\\,000
  • 1≤P_i≤100,0001 \leq P\_i \leq 100\\,000

예제3

  1. 예제 1

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

    입력
    5 100
    1 1 1 1 1
    10 10 10 10 10
    
    예상 출력
    50
    
  3. 예제 3

    입력
    5 1
    2 2 2 2 2
    2 2 2 2 2
    
    예상 출력
    0