물고기 2
시간 제한4초메모리 제한1024 MB
물고기 크기를 바꾸는 갱신과 구간 질의가 주어질 때, 구간 [L, R]에서 다른 물고기를 모두 먹고 살아남을 수 있는 물고기의 수를 구합니다.
문제
JOI군은 번호가 1부터 까지인 물고기 마리를 기르고 있다. 물고기 ()의 크기는 이다.
물고기를 기를 때는 다음 사실에 주의해야 한다. 인접한 두 물고기가 있으면 시간이 지남에 따라 한 물고기가 다른 물고기를 먹는다. 두 물고기 사이에 다른 물고기가 없으면 두 물고기는 인접한 것이다. 정확히 말하면, 물고기 의 크기가 물고기 의 크기 이상이고 두 물고기가 인접하면 가 를 먹는다. 그러면 의 크기는 원래 크기에 의 크기를 더한 값이 된다. 두 물고기의 크기가 같으면 둘 중 어느 쪽이든 상대를 먹을 수 있다.
JOI군은 일 동안 사고 실험을 하며 물고기를 기른다. 일째 ()에 다음 중 한 가지 행동을 한다.
- 1번 행동: 물고기 에게 특별한 사료를 준다. 그 뒤 물고기 의 크기는 가 된다.
- 2번 행동: 번호가 부터 까지인 물고기만 골라 왼쪽에서 오른쪽 순서로 수족관에 넣는다. 위 규칙에 따르면 물고기는 한 마리만 살아남는다. 살아남는 물고기는 어떤 물고기가 언제 먹히는지에 따라 달라진다. 물고기의 순서는 바뀌지 않으며, 같은 물고기를 두 마리가 동시에 먹는 일은 없다. JOI군은 살아남을 수 있는 물고기 번호의 가짓수를 알고 싶어 한다.
이것은 사고 실험일 뿐이며, 실제로 물고기가 먹히지는 않는다.
입력
첫 줄에 이 주어진다. 둘째 줄에는 이 공백으로 구분되어 주어진다. 다음 줄에 가 주어진다. 이어지는 개의 줄은 각각 로 시작하는 질의이다.
이면 한 줄에 정수 와 가 주어진다. 이는 일째의 1번 행동으로, 물고기 의 크기가 가 된다.
이면 한 줄에 정수 와 가 주어진다. 이는 일째의 2번 행동으로, 물고기 부터 까지를 대상으로 한다.
출력
2번 행동이 나올 때마다 입력 순서대로, 살아남을 수 있는 물고기 번호의 가짓수를 한 줄에 하나씩 출력한다.
제한
- ()
- 는 1 또는 2이다 ()
- ()
- ()
- ()