만드는 중입니다

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

위대한 전투

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

요약
구간 내 신의 힘을 1씩 낮추는 갱신과, 주어진 구간을 차례로 싸울 때 Kratos의 힘을 0으로 만드는 신의 번호를 구하는 질의를 처리합니다.
난이도

보통10점 중 7점

유형
세그먼트 트리, 시뮬레이션
정답자
아직 제출이 없습니다

문제

기력을 회복한 크라토스가 다시 여정에 나선다. 그는 티탄들과 함께 올림푸스 산에 오르고, 지금까지 가장 큰 싸움을 벌이려 한다.

산꼭대기에서 그는 신 nn명을 본다. 신들을 지켜본 뒤 크라토스는 각 신의 힘을 가늠한다. ii번 신의 힘은 sis_i이다.

신과의 싸움은 쉽지 않다. 그래서 ii번 신과 싸운 뒤 크라토스의 힘 TT는 ⌊Tsi⌋\lfloor \frac{T}{s_i} \rfloor가 된다. TT가 0까지 줄어들면 크라토스는 죽는다.

시간이 지나면서 가까이 서 있는 일부 신들이 지쳐 힘이 1 줄어든다. 즉 쿼리 (l,r)(l, r)는 위치 ll부터 rr까지 모든 신 ii에 대해 si=max⁡(si−1,1)s_i = \max(s_i - 1, 1)을 뜻한다.

싸움 도중 크라토스는 계획을 세운다. jj번 계획은 초기 힘 xjx_j로 ljl_j번 신부터 rjr_j번 신까지 차례로 싸우는 것이다. 각 계획마다 그가 살아남을 수 있는지 알고 싶다. 죽는다면 마지막 일격을 가하는 신의 번호를 알고 싶다.

각 계획에 대해 크라토스를 죽이는 신의 번호를 출력한다. 크라토스가 살아남으면 <<-1>>을 출력한다.

입력

첫 줄에 신의 수 nn과 쿼리의 수 qq가 주어진다 (1≤n,q≤500 0001 \leq n, q \leq 500\,000). 둘째 줄에는 신들의 힘 s1,s2,…,sns_1, s_2, \dots, s_n이 주어진다 (1≤si≤1091 \leq s_i \leq 10^9). 이어지는 qq개의 줄은 쿼리이며, 각 쿼리의 첫 값은 종류 typetype이다.

type=1type = 1이면 정수 ll과 rr이 이어서 주어진다 (1≤l≤r≤n1 \leq l \leq r \leq n). 위치 ll부터 rr까지 신들의 힘이 1 줄어든다.

type=2type = 2이면 정수 ll, rr, xx가 이어서 주어진다. 각각 첫 신의 번호, 마지막 신의 번호, 그 계획에서 크라토스의 초기 힘이다 (1≤l≤r≤n1 \leq l \leq r \leq n, 1≤x≤1091 \leq x \leq 10^9).

출력

type=2type = 2인 각 쿼리마다 크라토스를 죽이는 신의 번호를 출력한다. 계획을 마친 뒤 크라토스가 살아 있으면 <<-1>>을 출력한다.

힌트

첫 번째 예제의 첫 번째 쿼리에서 크라토스의 초기 힘은 61이다. 첫 번째 싸움 후 힘은 ⌊611⌋=61\lfloor \frac{61}{1} \rfloor = 61이다. 이어서 힘은 차례로 30, 10, 5, 1, 1, 1이 된다.

예제2

  1. 예제 1

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

    입력
    3 3
    100 200 300
    2 2 3 500
    1 1 3
    2 1 3 5890598
    
    예상 출력
    3
    3