작전

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

요약
1차원 배열에서 에너지가 e_i 이상일 때 칸을 점령해 k_i를 얻으며, 처음 점령하는 칸을 잘 골라 최대로 점령할 수 있는 칸 수를 구한다.
난이도

어려움10점 중 8점

유형
그리디, 힙, 구간, 정렬
정답자
아직 제출이 없습니다

문제

전쟁이 일어났다. 전쟁터는 11차원 배열로 표현된다. ii번째 칸을 점령하기 위해서는 ii와 인접한 칸 중 하나를 먼저 점령해야 한다. 또한 현재 가지고 있는 에너지가 e_ie\_i 이상일 때에만 점령 가능하며, 점령했을 때 에너지가 k_ik\_i만큼 증가한다. ii번째 칸을 점령한다고 e_ie\_i만큼 에너지가 감소하는 것은 아니다. 시작할 때 갖고 있는 에너지양은 PP이며, 따라서 처음에 e_i≤Pe\_i \le P인 칸 중 하나를 자유롭게 선택하여 점령할 수 있다. 처음 선택하는 칸에 따라 점령할 수 있는 칸의 개수가 달라질 것이다. 최대한 많은 칸을 점령했을 때 점령한 칸의 개수를 출력하라.

입력

첫 번째 줄에 배열의 크기 nn, 처음 갖고 있는 에너지양 PP가 공백으로 구분되어 주어진다. (1≤n≤500,0001 \le n \le 500\\,000; 0≤P≤1090 \le P \le 10^9)

두 번째 줄에 배열의 각 칸을 점령하는 데 필요한 에너지 e_1,e_2,…,e_ne\_1, e\_2, \dots ,e\_n이 공백을 사이에 두고 주어진다. (0≤e_i≤1090 \le e\_i \le 10^9)

세 번째 줄에 배열의 각 칸을 점령했을 때 얻는 에너지 k_1,k_2,…,k_nk\_1, k\_2, \dots ,k\_n이 공백을 사이에 두고 주어진다. (0≤k_i≤1090 \le k\_i \le 10^9)

출력

최대한 많은 칸을 점령했을 때 점령한 칸의 개수를 출력한다.

예제2

  1. 예제 1

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

    입력
    11 3
    3 1 4 2 5 2 8 9 3 0 2
    1 0 1 1 1 0 0 0 1 2 1
    
    예상 출력
    6