수열과 쿼리 46

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

요약
각 쿼리 X에 대해 모든 원소에 X를 더한 수열의 최대 연속 구간 합을 구한다.
난이도

어려움10점 중 8점

유형
동적 계획법, 수학, 정렬, 이분 탐색
정답자
아직 제출이 없습니다

문제

길이 ll의 수열 \[B_1,B_2,…,B_l]\[B\_1 , B\_2 , \dots , B\_l ]에 대해, 수열의 연속 구간은 \[B_i,B_i+1,…,B_j]\[B\_i , B\_{i+1} ,\dots , B\_j ]와 같이 수열 위에서 연속적으로 등장하는 수들의 부분 수열로 정의된다. 연속 구간은 비어 있을 수 없다. 즉, 1≤i≤j≤l1 ≤ i ≤ j ≤ l을 만족해야 한다.

길이 ll의 수열 \[B_1,B_2,…,B_l]\[B\_1 , B\_2 , \dots , B\_l ]에 대해, 수열의 최대 연속 구간 합은 수열의 모든 연속 구간의 원소의 합의 최댓값으로 정의된다. 예를 들어, 수열 \[6,−7,3,−1,5,2]\[6, −7, 3, −1, 5, 2]의 최대 연속 구간 합은 99이며, 이는 연속 구간 \[3,−1,5,2]\[3, −1, 5, 2]를 골라서 얻을 수 있다. 수열 BB의 최대 연속 구간 합을 수학 기호로 표현하면 max⁡_1≤i≤j≤l(∑_k=ijB_k)\max\_{1 \le i \le j \le l}{\left( \sum\_{k=i}^j{B\_k} \right)}이다.

길이 NN의 수열 \[A_1,A_2,…,A_N]\[A\_1 , A\_2 , \dots , A\_N ]과 QQ개의 쿼리가 주어진다. ii번째 쿼리는 하나의 정수 X_iX\_i로 표현된다. X_iX\_i가 주어졌을 때, 수열 \[A_1+X_i,A_2+X_i,…,A_N+X_i]\[A\_1 + X\_i , A\_2 + X\_i , \dots , A\_N + X\_i ]의 최대 연속 구간 합을 계산하라.

입력

첫 번째 줄에 NN, QQ가 공백을 사이에 두고 주어진다.

두 번째 줄에 A_1,A_2,…,A_NA\_1 , A\_2 , \dots , A\_N이 공백을 사이에 두고 주어진다.

세 번째 줄에 X_1,X_2,…,X_QX\_1 , X\_2 , \dots , X\_Q가 공백을 사이에 두고 주어진다.

출력

QQ개의 줄을 출력하라. 이 중 ii (1≤i≤Q1 ≤ i ≤ Q)번째 줄에는 수열 \[A_1+X_i,A_2+X_i,…,A_N+X_i]\[A\_1 + X\_i , A\_2 + X\_i , \dots , A\_N + X\_i ]의 최대 연속 구간 합을 출력하라.

제한

  • 주어지는 모든 수는 정수이다.
  • 1≤N≤1,000,0001 ≤ N ≤ 1\\, 000\\, 000
  • 1≤Q≤1,000,0001 ≤ Q ≤ 1\\, 000\\, 000
  • 1≤i≤N1 ≤ i ≤ N인 모든 ii에 대해 −109≤A_i≤109−10^9 ≤ A\_i ≤ 10^9 이다.
  • 1≤i≤Q1 ≤ i ≤ Q인 모든 ii에 대해 −109≤X_i≤109−10^9 ≤ X\_i ≤ 10^9 이다.

예제2

  1. 예제 1

    입력
    6 15
    6 -7 3 -1 5 2
    -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7
    
    예상 출력
    -1
    0
    1
    2
    3
    4
    5
    9
    14
    20
    26
    32
    38
    44
    50
    
  2. 예제 2

    입력
    10 15
    -2 6 3 -8 1 2 0 -3 9 6
    -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7
    
    예상 출력
    2
    3
    5
    7
    9
    11
    13
    16
    25
    34
    44
    54
    64
    74
    84