연우의 배수로 뚫기

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

요약
기둥 높이가 주어질 때 비가 충분히 내린 뒤 고이는 물의 총량을 구하고, 서로 다른 위치에 배수구를 하나씩 설치해 높이를 0으로 만들며 각 단계 이후 남은 물의 양을 출력한다.
난이도

어려움10점 중 8점

유형
유니온 파인드, 배열, 정렬, 시뮬레이션
정답자
아직 제출이 없습니다

문제

일렬로 NN개의 칸이 이어진 땅이 있다. 각 칸의 높이는 h_1,h_2,⋯ ,h_Nh\_1, h\_2,\cdots, h\_N 이다.

비가 충분히 많이 내려 현재 땅 위에 물이 최대한으로 고여 있다. 물은 좌우 양쪽이 자신보다 높은 지형으로 둘러싸인 구간에만 고인다. 구체적으로 ii번 칸에 높이 xx까지 물이 차오르기 위해선 l<i<rl < i < r이면서 h_i<x≤min⁡(h_l,h_r)h\_i < x \le \min(h\_l, h\_r)을 만족하는 (l,r)(l, r)이 존재해야 한다.

연우는 이 땅에 배수구를 설치하여 물을 빼내려고 한다. 어떤 칸 ii에 배수구를 설치하면, 그 칸의 높이는 00이 되고 해당 칸을 통해 연결된 물은 전부 빠져나가게 된다.

연우는 총 QQ개의 배수구를 차례대로 설치한다. 이전에 설치된 배수구는 유지된다. 배수구를 설치하기 전의 물의 총량과, 각 쿼리마다 배수구를 하나 설치한 이후 땅 위에 남아 있는 물의 총량을 구하여라.

입력

첫째 줄에 정수 NN이 주어진다. (1≤N≤200,0001 \le N \le 200\\,000)

둘째 줄에 NN개의 정수 h_1,h_2,…,h_Nh\_1, h\_2, …, h\_N이 주어진다. (1≤h_i≤1091 \le h\_i \le 10^9)

셋째 줄에 정수 QQ가 주어진다. (1≤Q≤N1 \le Q \le N)

넷째 줄부터 QQ개의 줄에 걸쳐, 각 줄에 정수 ii가 주어진다. (1≤i≤N1 \le i \le N)

입력으로 주어지는 모든 ii는 서로 다르다.

출력

첫째 줄에, 배수구를 설치하기 전 땅에 고인 물의 총량을 출력한다.

다음 QQ개의 줄에 걸쳐, 각 쿼리마다 배수구를 설치한 이후에 남아 있는 물의 총량을 한 줄에 하나씩 출력한다.

예제2

  1. 예제 1

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

    입력
    10
    5 2 4 1 3 1 6 2 3 2
    3
    4
    8
    2
    
    예상 출력
    15
    5
    4
    2