만드는 중입니다

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

폭우 (Easy)

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

요약
N개의 벽 높이가 주어지고, 벽 하나의 높이를 올리는 Q번의 갱신마다 고일 수 있는 빗물의 최대 양을 출력합니다.
난이도

보통10점 중 6점

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

문제

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

QQ개의 쿼리가 주어진다. 각 쿼리는 ii, xx로 이루어지며, 이후로 ii번째 칸의 벽 높이가 xx가 된다는 뜻이다. 이때 Ai<xA_i < x임이 보장된다.

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

입력

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

두 번째 줄에 초기 높이 A1,A2,…,ANA_1, A_2, \ldots, A_N이 순서대로 주어진다. (1≤Ai≤1091 \le A_i \le 10^9)

세 번째 줄부터 QQ개의 줄에 걸쳐 각 줄마다 쿼리를 나타내는 두 정수 ii, xx가 공백으로 구분되어 주어진다. (1≤i≤N1 \le i \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 2
    1 10
    3 9
    
    예상 출력
    28
    58
    53