아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

물고기 2

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

요약
물고기 크기를 바꾸는 갱신과 구간 질의가 주어질 때, 구간 [L, R]에서 다른 물고기를 모두 먹고 살아남을 수 있는 물고기의 수를 구합니다.
난이도

어려움10점 중 8점

유형
분할 정복, 그리디, 누적 합
정답자
아직 제출이 없습니다

문제

JOI군은 번호가 1부터 NN까지인 물고기 NN마리를 기르고 있다. 물고기 ii (1≤i≤N1 \le i \le N)의 크기는 AiA_i이다.

물고기를 기를 때는 다음 사실에 주의해야 한다. 인접한 두 물고기가 있으면 시간이 지남에 따라 한 물고기가 다른 물고기를 먹는다. 두 물고기 사이에 다른 물고기가 없으면 두 물고기는 인접한 것이다. 정확히 말하면, 물고기 xx의 크기가 물고기 yy의 크기 이상이고 두 물고기가 인접하면 xx가 yy를 먹는다. 그러면 xx의 크기는 원래 크기에 yy의 크기를 더한 값이 된다. 두 물고기의 크기가 같으면 둘 중 어느 쪽이든 상대를 먹을 수 있다.

JOI군은 QQ일 동안 사고 실험을 하며 물고기를 기른다. jj일째 (1≤j≤Q1 \le j \le Q)에 다음 중 한 가지 행동을 한다.

  • 1번 행동: 물고기 XjX_j에게 특별한 사료를 준다. 그 뒤 물고기 XjX_j의 크기는 YjY_j가 된다.
  • 2번 행동: 번호가 LjL_j부터 RjR_j까지인 물고기만 골라 왼쪽에서 오른쪽 순서로 수족관에 넣는다. 위 규칙에 따르면 물고기는 한 마리만 살아남는다. 살아남는 물고기는 어떤 물고기가 언제 먹히는지에 따라 달라진다. 물고기의 순서는 바뀌지 않으며, 같은 물고기를 두 마리가 동시에 먹는 일은 없다. JOI군은 살아남을 수 있는 물고기 번호의 가짓수를 알고 싶어 한다.

이것은 사고 실험일 뿐이며, 실제로 물고기가 먹히지는 않는다.

입력

첫 줄에 NN이 주어진다. 둘째 줄에는 A1,A2,⋯ ,ANA_1, A_2, \cdots, A_N이 공백으로 구분되어 주어진다. 다음 줄에 QQ가 주어진다. 이어지는 QQ개의 줄은 각각 TjT_j로 시작하는 질의이다.

Tj=1T_j = 1이면 한 줄에 정수 XjX_j와 YjY_j가 주어진다. 이는 jj일째의 1번 행동으로, 물고기 XjX_j의 크기가 YjY_j가 된다.

Tj=2T_j = 2이면 한 줄에 정수 LjL_j와 RjR_j가 주어진다. 이는 jj일째의 2번 행동으로, 물고기 LjL_j부터 RjR_j까지를 대상으로 한다.

출력

2번 행동이 나올 때마다 입력 순서대로, 살아남을 수 있는 물고기 번호의 가짓수를 한 줄에 하나씩 출력한다.

제한

  • 1≤N≤1000001 \le N \le 100000
  • 1≤Q≤1000001 \le Q \le 100000
  • 1≤Ai≤10000000001 \le A_i \le 1000000000 (1≤i≤N1 \le i \le N)
  • TjT_j는 1 또는 2이다 (1≤j≤Q1 \le j \le Q)
  • 1≤Xj≤N1 \le X_j \le N (1≤j≤Q1 \le j \le Q)
  • 1≤Yj≤10000000001 \le Y_j \le 1000000000 (1≤j≤Q1 \le j \le Q)
  • 1≤Lj≤Rj≤N1 \le L_j \le R_j \le N (1≤j≤Q1 \le j \le Q)

예제4

  1. 예제 1

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

    입력
    13
    10 4 2 5 20 5 4 8 20 10 3 3 7
    1
    2 1 13
    
    예상 출력
    7
    
  3. 예제 3

    입력
    12
    32 32 4 1 1 1 1 4 4 16 32 128
    7
    2 1 12
    2 2 6
    2 8 10
    2 1 9
    2 3 8
    2 5 9
    2 2 12
    
    예상 출력
    12
    1
    1
    2
    6
    2
    1
    
  4. 예제 4

    입력
    10
    2 3 5 10 1 3 4 9 5 2
    8
    2 1 10
    1 10 5
    2 1 10
    1 4 1000000000
    2 1 10
    1 8 20
    1 4 8
    2 1 10
    
    예상 출력
    4
    6
    1
    6