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

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

최대 구간 합

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

요약
각 질의값 b_j마다 a의 원소가 모두 b_j 이상인 연속 구간의 최대 합을 구하고, 그러한 구간이 없으면 0을 출력한다.
난이도

보통10점 중 7점

유형
정렬, 분할 정복, 동적 계획법, 누적 합
정답자
아직 제출이 없습니다

문제

마티는 과거에서 미래로 돌아가려고 한다. 타임머신의 컴퓨터가 고장 나서, 필요한 값을 직접 계산해 입력해야 한다.

마티에게는 정수 배열이 두 개 있다. 길이가 nn인 a[1..n]a[1..n]과 길이가 mm인 b[1..m]b[1..m]이다. 각 bjb_j에 대해, 원소가 모두 bjb_j 이상인 구간 a[l..r]a[l..r] 가운데 합 al+al+1+⋯+ara_l + a_{l+1} + \cdots + a_r이 가장 큰 값을 구해야 한다.

구간은 비어 있을 수 없어서 l≤rl \le r이고, 최대 합이 음수가 되기도 한다. aa에 bjb_j 이상인 원소가 하나도 없으면 조건을 만족하는 구간이 없다.

입력

첫째 줄에 배열 aa와 bb의 크기인 두 정수 nn과 mm이 주어진다 (1≤n,m≤1051 \le n, m \le 10^5).

둘째 줄에 nn개의 정수 aia_i가 주어진다 (−109≤ai≤109-10^9 \le a_i \le 10^9).

셋째 줄에 mm개의 정수 bjb_j가 주어진다 (−109≤bj≤109-10^9 \le b_j \le 10^9).

출력

mm개의 정수를 한 줄에 공백으로 구분해 출력한다. jj번째 수는 bjb_j에 대한 최대 구간 합이고, 조건을 만족하는 구간이 없으면 00을 출력한다.

예제5

  1. 예제 1

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

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

    입력
    1 1
    -1000000000
    -1000000000
    
    예상 출력
    -1000000000
    
  4. 예제 4

    입력
    1 1
    -5
    -4
    
    예상 출력
    0
    
  5. 예제 5

    입력
    6 3
    999999999 999999999 999999999 999999999 999999999 999999999
    1000000000 999999999 0
    
    예상 출력
    0 5999999994 5999999994