만드는 중입니다

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

중첩된 사탕 상자

면접 대비

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

요약
각 레벨의 상자 개수 a_i가 주어질 때, 질의마다 사탕 x개 이상을 얻는 데 필요한 최소 상자 수를 구합니다.
난이도

보통10점 중 5점

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

문제

안드레이는 새해 선물로 사탕 상자를 받았다. 상자를 열어 보니 같은 모양의 더 작은 상자가 여러 개 들어 있었고, 그 안에는 또 더 작은 상자가 들어 있었다. 형식적으로 사탕은 레벨 00인 상자로 본다. 레벨 ii인 상자에는 레벨 i−1i-1인 상자가 aia_i개 들어 있다. 안드레이가 받은 상자의 레벨은 nn이다.

오늘 친구들이 찾아오면 안드레이는 사탕을 나눠 주려고 한다. 이를 위해 상자를 여러 개 열어야 한다. 안드레이는 아직 열지 않은 상자 안에 든 상자를 열 수 없다. 여러 xx 값에 대해, 사탕을 최소 xx개 얻기 위해 열어야 하는 상자 개수의 최솟값을 구하라. 친구가 몇 명 올지 아직 정하지 못해서 안드레이는 여러 xx 값에 대한 답을 알고 싶어 한다.

입력

첫 줄에 상자 개수 nn과 질문 개수 mm이 주어진다 (1≤n,m≤300 0001 \le n, m \le 300\,000). 둘째 줄에는 정수 a1,a2,…,ana_1, a_2, \ldots, a_n이 주어진다 (1≤ai≤1091 \le a_i \le 10^9). 셋째 줄에는 정수 x1,x2,…,xmx_1, x_2, \ldots, x_m이 주어진다 (1≤xi≤10121 \le x_i \le 10^{12}). 각 xix_i는 레벨 nn인 상자에 들어 있는 사탕의 총 개수를 넘지 않는다.

출력

mm개의 정수를 출력한다. ii번째 수는 사탕을 xix_i개 이상 얻기 위해 안드레이가 열어야 하는 상자 개수의 최솟값이다.

힌트

첫 번째 예시에서 사탕은 다섯 단계의 상자 안에 숨어 있다. 두 번째 예시에서 사탕 13개를 얻으려면 가장 큰 상자를 연 다음, 레벨 2 상자 두 개를 열고, 마지막으로 레벨 1 상자 여섯 개 중 다섯 개를 연다.

예제2

  1. 예제 1

    입력
    5 1
    1 1 1 1 1
    1
    
    예상 출력
    5
    
  2. 예제 2

    입력
    3 3
    3 3 3
    2 8 13
    
    예상 출력
    3
    5
    8