60015 수열과 쿼리 Diamond V

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

문제

길이 ll의 수열 [B1,B2,,Bl][B_1 , B_2 , \dots , B_l ]에 대해, 수열의 연속 구간[Bi,Bi+1,,Bj][B_i , B_{i+1} ,\dots , B_j ]와 같이 수열 위에서 연속적으로 등장하는 수들의 부분 수열로 정의된다. 연속 구간은 비어 있을 수 없다. 즉, 1ijl1 ≤ i ≤ j ≤ l을 만족해야 한다.

길이 ll의 수열 [B1,B2,,Bl][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의 최대 연속 구간 합을 수학 기호로 표현하면 max1ijl(k=ijBk)\max_{1 \le i \le j \le l}{\left( \sum_{k=i}^j{B_k} \right)}이다.

길이 NN의 수열 [A1,A2,,AN][A_1 , A_2 , \dots , A_N ]QQ개의 쿼리가 주어진다. ii번째 쿼리는 하나의 정수 XiX_i로 표현된다. XiX_i가 주어졌을 때, 수열 [A1+Xi,A2+Xi,,AN+Xi][A_1 + X_i , A_2 + X_i , \dots , A_N + X_i ]의 최대 연속 구간 합을 계산하라.

입력

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

두 번째 줄에 A1,A2,,ANA_1 , A_2 , \dots , A_N이 공백을 사이에 두고 주어진다.

세 번째 줄에 X1,X2,,XQX_1 , X_2 , \dots , X_Q가 공백을 사이에 두고 주어진다.

출력

QQ개의 줄을 출력하라. 이 중 ii (1iQ1 ≤ i ≤ Q)번째 줄에는 수열 [A1+Xi,A2+Xi,,AN+Xi][A_1 + X_i , A_2 + X_i , \dots , A_N + X_i ]의 최대 연속 구간 합을 출력하라.

제한

  • 주어지는 모든 수는 정수이다.
  • 1N10000001 ≤ N ≤ 1\, 000\, 000
  • 1Q10000001 ≤ Q ≤ 1\, 000\, 000
  • 1iN1 ≤ i ≤ N인 모든 ii에 대해 109Ai109−10^9 ≤ A_i ≤ 10^9 이다.
  • 1iQ1 ≤ i ≤ Q인 모든 ii에 대해 109Xi109−10^9 ≤ X_i ≤ 10^9 이다.

서브태스크

번호배점제한
15N,Q300N, Q ≤ 300
25N300N ≤ 300
328N10000N ≤ 10\, 000
417N125000N ≤ 125\, 000
516N250000N ≤ 250\, 000
615N500000N ≤ 500\, 000
714추가 제약 조건 없음.

예제 입출력

예제 입력 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
-1
0
1
2
3
4
5
9
14
20
26
32
38
44
50
예제 입력 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
2
3
5
7
9
11
13
16
25
34
44
54
64
74
84

출처

올림피아드 한국정보올림피아드 KOI 2025 2차 중등부 4번 고등부 3번
solution.cpp
에디터 불러오는 중...