마이마이 순회 돌기

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

요약
곡별 클리어 시간의 갱신과 신곡 추가를 처리하면서, 시간 T 안에 클리어할 수 있는 서로 다른 곡의 최대 개수를 구한다.
난이도

보통10점 중 6점

유형
세그먼트 트리, 정렬, 이분 탐색, 누적 합
정답자
아직 제출이 없습니다

문제

승민이는 리듬 게임 마이마이에 푹 빠져 있다. 게임을 하는 데 사용할 수 있는 시간이 적은 승민이는 주어진 시간 내에 최대한 많은 곡을 클리어하고자 한다. 마이마이에는 현재 총 NN개의 곡이 수록되어 있으며, 곡마다 클리어에 필요한 시간이 정해져 있다. 또한, 곡의 클리어 시간이 바뀌거나 신곡이 추가될 수 있으므로, 다음 세 종류의 쿼리를 처리해야 한다:

  • 11 jj vv: jj번째 곡을 클리어하는 데 필요한 소요 시간을 vv 로 변경한다.
  • 22 TT: 게임을 하는 데 사용할 수 있는 시간이 TT일 때, 클리어할 수 있는 곡의 최대 개수를 출력한다. 클리어 시간 이외의 시간은 무시한다.
  • 33 vv: 소요 시간이 vv인 신곡을 리스트의 맨 뒤에 추가한다. 만일 지금 수록곡이 MM개라면, 신곡의 곡 번호는 M+1M+1이 된다.

승민이는 같은 곡을 반복해서 클리어하는 것을 싫어하기 때문에, 한 쿼리 내에서는 서로 다른 곡만 선택할 수 있다. 이때, 다음에 선택하는 곡의 인덱스가 연속되어 있을 필요는 없다.

각 쿼리는 독립적으로 판단되므로, 이전 쿼리에서 사용한 곡도 이후 쿼리에서 다시 선택할 수 있다.

입력

첫째 줄에 정수 NN과 QQ가 공백으로 구분되어 주어진다.

둘째 줄에 NN개의 정수 a_1,a_2,⋯ ,a_Na\_1,a\_2,\cdots ,a\_N이 공백으로 구분되어 주어진다. 각 a_ia\_i는 ii번째 곡의 클리어 시간이다. (1≤i≤N1 \leq i \leq N)

셋째 줄부터 QQ개의 줄에 걸쳐 쿼리에 대한 정보가 주어진다.

22번 쿼리는 한 번 이상 주어진다.

출력

22번 쿼리의 결과를 한 줄에 하나씩 출력한다.

제한

  • 1≤N,Q≤200,0001\leq N,Q\leq 200\\, 000
  • 1≤a_i≤100,0001\leq a\_i\leq 100\\, 000
  • 1≤j≤N+(해당 쿼리 이전에 주어진 3번 쿼리의 개수)1\leq j\leq N+\text{(해당 쿼리 이전에 주어진 3번 쿼리의 개수)}
  • 1≤v≤100,0001\leq v\leq 100\\, 000
  • 1≤T≤1091\leq T\leq 10^9

입력으로 주어지는 모든 수는 정수이다.

예제2

  1. 예제 1

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

    입력
    7 8
    5 8 7 5 5 1 6
    3 8
    1 6 6
    1 1 7
    3 13
    3 7
    2 37
    3 9
    2 56
    
    예상 출력
    6
    8