만드는 중입니다

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

위대한 도시 상트페테르부르크

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

요약
구간마다 높이가 있는 거리에서 매일 [l, r] 구간의 높이가 1씩 올라갈 때마다 고이는 빗물의 총량을 구합니다.
난이도

어려움10점 중 9점

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

문제

상트페테르부르크는 비가 오지 않을 때 세계에서 가장 아름다운 도시다. 이 문제에서는 매일 비가 온다고 가정한다.

상트페테르부르크의 한 거리는 특이한 모양을 하고 있다. 길이가 1미터인 구간 nn개가 좁은 띠를 이루고, 구간 ii의 지면으로부터 높이는 aia_i미터다. 띠의 깊이는 1미터이며, 앞과 뒤는 매우 높은 건물이 막고 있다. 그래서 비가 오면 빗물은 왼쪽 끝이나 오른쪽 끝으로 빠져나가지 못하고 고인다. 높이 a1,a2,…,ana_1, a_2, \ldots, a_n이 주어질 때, 거리에 고이는 빗물의 양(立방미터)을 구하시오.

건설 회사가 qq일 동안 이 거리에서 공사를 한다. ii일째에는 lil_i부터 rir_i까지의 모든 구간에 아스팔트를 깔아서, 구간 li,li+1,…,ril_i, l_i+1, \ldots, r_i의 높이를 각각 1미터씩 높인다. 공사 전과 매일 공사가 끝난 뒤에 고이는 빗물의 총량을 구하시오.

입력

첫 줄에 구간의 개수 nn과 공사 횟수 qq가 주어진다 (1≤n,q≤2⋅1051 \le n, q \le 2 \cdot 10^5). 둘째 줄에는 공사 전 각 구간의 높이를 나타내는 정수 a1,a2,…,ana_1, a_2, \ldots, a_n이 주어진다 (1≤ai≤1091 \le a_i \le 10^9). 이어지는 qq개의 줄에는 그날 공사하는 범위를 나타내는 두 정수 lil_i와 rir_i가 주어진다 (1≤li≤ri≤n1 \le l_i \le r_i \le n).

출력

q+1q+1개의 정수를 출력한다. 첫 번째 값은 모든 공사 전 빗물의 양이고, 이후 값은 각 공사 후 빗물의 양이다.

힌트

그림은 첫 번째 예시에서 거리에 고이는 빗물의 양을 보여준다.

예제2

  1. 예제 1

    입력
    5 4
    3 2 1 2 3
    1 5
    2 4
    1 2
    5 5
    
    예상 출력
    4
    4
    1
    1
    3
    
  2. 예제 2

    입력
    7 3
    1 1000000000 1 1 1 1000000000 1
    1 3
    4 5
    5 7
    
    예상 출력
    2999999997
    2999999996
    2999999994
    2999999996