만드는 중입니다

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

보물 찾기

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

요약
칸에 보물을 놓거나 치우는 질의를 처리하고, 매번 각 칸에서 왼쪽과 오른쪽으로 가장 가까운 보물까지의 거리를 곱한 값의 합을 구합니다.
난이도

보통10점 중 6점

유형
구현, 수학
정답자
아직 제출이 없습니다

문제

Morgan은 보물찾기 행사를 위해 보물 창고를 설계하고 있다. 보물 창고는 0번부터 N+1N + 1번까지 번호가 붙은 1차원 격자이며, 칸은 모두 N+2N + 2개이다. 각 칸은 비어 있거나 보물이 있다. 처음에 0번 칸과 N+1N + 1번 칸에는 보물이 있고, 나머지 칸은 비어 있다.

Morgan은 설계를 실험하면서 1번부터 QQ번까지 번호가 매겨진 QQ번의 갱신을 한다. ii번째 갱신에서 Morgan은 AiA_i번 칸을 바꾼다. 칸이 비어 있으면 보물을 놓고, 보물이 있으면 보물을 치워 칸을 비운다. 모든 ii에 대해 1≤Ai≤N1 \le A_i \le N이 보장되므로, 0번 칸과 N+1N + 1번 칸에는 항상 보물이 있다.

각 갱신 후에 Morgan은 보물찾기가 얼마나 어려운지 알고 싶어 한다. xx번 칸에 서 있을 때의 난이도는 두 값의 곱이다. 하나는 xx에서 y≤xy \le x인 칸 중 가장 가까운 보물까지의 거리이고, 다른 하나는 xx에서 y≥xy \ge x인 칸 중 가장 가까운 보물까지의 거리이다. 두 칸 사이의 거리는 번호 차이의 절댓값이다. 전체 난이도는 0≤x≤N+10 \le x \le N + 1인 모든 xx번 칸의 난이도를 더한 값이다.

입력

첫 줄에 두 정수 NN과 QQ가 주어진다 (1≤N≤1000001 \le N \le 100000; 1≤Q≤1000001 \le Q \le 100000). 이어지는 QQ개의 줄에는 각각 ii번째 갱신에서 바꿀 칸을 나타내는 정수 AiA_i (1≤Ai≤N1 \le A_i \le N)가 하나씩 주어진다.

출력

각 갱신 후, 그 시점의 전체 난이도를 한 줄에 출력한다.

예제2

  1. 예제 1

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

    입력
    10 14
    7
    2
    9
    5
    2
    9
    6
    7
    5
    8
    6
    8
    7
    10
    
    예상 출력
    66
    31
    23
    8
    23
    31
    30
    40
    55
    40
    88
    220
    66
    60