MMSQ

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

요약
구간 [l,r]의 모든 부분 배열 중 (최댓값 - 최솟값 + 합)이 최대인 값을 구하고, 중간에 점 갱신을 처리한다.
난이도

어려움10점 중 9점

유형
세그먼트 트리, 동적 계획법, 그리디
정답자
아직 제출이 없습니다

문제

길이가 NN인 정수 배열 AA와 쿼리 QQ개가 주어진다. 각 쿼리는 다음 두 종류 중 하나이다.

  • 1 x v: A_xA\_x의 값을 vv로 바꾼다.
  • 2 l r: max(i,j)=max⁡_i≤k≤jA_kmax(i,j) =\max\_{i\le k\le j}A\_k, min(i,j)=min⁡_i≤k≤jA_kmin(i,j) =\min\_{i\le k\le j}A\_k, sum(i,j)=∑_i≤k≤jA_ksum(i,j) =\sum\_{i\le k\le j}A\_k로 정의할 때, max⁡_l≤i≤j≤rmax(i,j)−min(i,j)+sum(i,j)\max\_{l\le i\le j\le r}max(i,j) -min(i,j) +sum(i,j)의 값을 출력한다.

모든 쿼리를 올바르게 처리하는 프로그램을 작성하여라.

입력

첫 번째 줄에 배열의 길이 NN과 쿼리의 개수 QQ가 공백으로 구분되어 주어진다. (1≤N,Q≤100,000)(1\le N,Q\le 100\\, 000)

두 번째 줄에 배열 AA의 원소 A_1,⋯ ,A_NA\_1,\cdots ,A\_N이 공백으로 구분되어 주어진다. (−109≤A_i≤109)(-10^9\le A\_i\le 10^9)

세 번째 줄부터 QQ개의 줄에 걸쳐 쿼리가 아래와 같은 형식 중 하나로 주어진다.

  • 1 x v (1≤x≤N;−109≤v≤109)(1\le x\le N;-10^9\le v\le 10^9)
  • 2 l r (1≤l≤r≤N)(1\le l\le r\le N)

22번 쿼리가 하나 이상 주어진다.

출력

각 22번 쿼리의 답을 한 줄에 하나씩 차례대로 출력한다.

예제1

  1. 예제 1

    입력
    6 6
    1 -3 4 -2 5 6
    2 1 5
    1 3 -1
    2 1 5
    2 3 6
    1 5 0
    2 1 6
    
    예상 출력
    14
    10
    17
    12