만드는 중입니다

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

blobpopcorn

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

요약
서로 다른 높이를 가진 blob이 일렬로 있을 때, 두 끝보다 사이의 모든 blob이 작은 쌍의 개수를 높이 갱신과 함께 구한다.
난이도

어려움10점 중 8점

유형
세그먼트 트리, 조합론, 수학, 구현
정답자
아직 제출이 없습니다

문제

NN마리의 블롭이 한 줄로 서 있다. ii번째 블롭의 키는 AiA_i이고, AiA_i의 값은 서로 다르다.

가끔씩 두 블롭은 팝콘을 먹으며 사이의 다른 블롭들을 구경한다. i,ji, j번째 (1≤i<j≤N)(1 \le i < j \le N) 블롭 두 마리가 사이의 다른 블롭들을 구경하려면 두 블롭 사이에 있는 모든 블롭이 두 블롭보다 키가 작아야 한다.

블롭들은 자신이 어떤 블롭들을 구경할 수 있는지 궁금해졌지만, 블롭의 키가 자주 바뀌기 때문에 궁금증을 풀 수 없었다.

블롭들을 위해 다음 두 질의를 해결해 주자!

  • 11 xx yy : xx번째 블롭의 키 AxA_x를 yy로 바꾼다.
  • 22 : 1≤i<j≤N1 \le i < j \le N을 만족하는 모든 쌍 (i,j)(i, j) 중 i,ji, j번째 블롭 두 마리가 사이의 다른 블롭들을 구경할 수 있는 쌍의 개수를 출력한다.

입력

첫째 줄에 수열의 길이 NN과 질의의 개수 QQ가 공백으로 구분되어 주어진다.

둘째 줄에 수열 A1,A2,⋯ ,ANA_1, A_2, \cdots, A_N이 공백으로 구분되어 주어진다.

셋째 줄부터 QQ개의 줄에 걸쳐 문제에서 설명한 질의가 주어진다. 22번 질의는 최소 한 개 이상 존재한다.

출력

22번 질의마다 답을 출력한다.

제한

  • 1≤N,Q≤1051 \le N, Q \le 10^5
  • 1≤x≤N1 \le x \le N
  • 1≤Ai,y≤1091 \le A_i, y \le 10^9 (1≤i≤N)(1 \le i \le N)
  • 모든 입력값은 정수이다.
  • 입력으로 주어지는 수열의 원소는 모두 다르고, 각각의 질의를 실행한 후의 수열의 원소들도 모두 서로 다르다.

예제1

  1. 예제 1

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