만드는 중입니다

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

폭우

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

요약
N개의 벽 높이와 구간 값 대입 쿼리가 주어질 때, 각 쿼리 뒤에 벽 사이에 고이는 빗물의 최대량을 구합니다.
난이도

어려움10점 중 8점

유형
세그먼트 트리, 배열, 그리디
정답자
아직 제출이 없습니다

문제

일렬로 놓인 NN개의 칸에 끊임없이 비가 내린다. ii번째 칸에는 처음에 높이 AiA_i인 벽이 세워져 있다. 벽 안에 고인 비가 가득 차면, 넘친 비는 왼쪽 끝이나 오른쪽 끝 바깥의 빈 공간으로 흘러가 사라진다. 빗물은 일렬로 놓인 칸을 따라 좌우 방향으로만 이동하고, 다른 방향으로는 이동하지 않는다.

QQ개의 쿼리가 주어진다. 각 쿼리는 l,r,xl, r, x로 이뤄지며, [l,r][l, r] 구간의 칸에 세워진 벽의 높이가 이후로 xx가 된다는 뜻이다.

각 쿼리가 끝날 때마다 최대 얼마만큼의 비가 고이게 될 수 있는지 답하라.

입력

첫 번째 줄에 NN, QQ가 차례대로 주어진다. (1≤N≤100 0001 \le N \le 100\,000; 1≤Q≤100 0001 \le Q \le 100\,000)

두 번째 줄에 초기 높이 AiA_i가 순서대로 주어진다. (1≤Ai≤1091 \le A_i \le 10^9)

세 번째 줄부터 QQ개의 줄에 걸쳐 각 줄마다 쿼리를 의미하는 세 정수 l,r,xl, r, x가 공백으로 구분되어 주어진다. (1≤l≤r≤N1 \le l \le r \le N; 1≤x≤1091 \le x \le 10^9)

입력으로 주어지는 모든 수는 정수이다.

출력

QQ개의 줄에 걸쳐 각 쿼리를 수행했을 때의 답을 출력한다.

예제1

  1. 예제 1

    입력
    12 3
    3 1 4 1 5 9 2 6 5 3 5 10
    4 4 2
    1 2 10
    3 11 9
    
    예상 출력
    28
    49
    9