만드는 중입니다

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

수열과 쿼리 43

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

요약
수열의 원소를 조회하고, 구간에 대해 조건부 뺄셈, 등차수열 형태 대입, 정수 제곱근 연산을 수행합니다.
난이도

어려움10점 중 9점

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

문제

길이가 NN인 수열 A1,A2,…,ANA_1, A_2, \ldots, A_N이 주어진다. 이때, 다음 쿼리를 수행하는 프로그램을 작성하시오.

  • 1 i: AiA_i를 출력한다. (1≤i≤N1 \le i \le N)
  • 2 x y t: Ax,Ax+1,…,AyA_x, A_{x+1}, \ldots, A_y 중 tt 미만의 수가 있다면 이 쿼리를 무시한다. 그렇지 않다면 Ax,Ax+1,…,AyA_x, A_{x+1}, \ldots, A_y에서 각각 tt를 뺀다. (1≤x≤y≤N1 \le x \le y \le N, 1≤t≤10181 \le t \le 10^{18})
  • 3 x y t: x≤i≤yx \le i \le y인 모든 ii에 대해 Ai=t+i−yA_i = t + i - y로 둔다. (1≤x≤y≤N1 \le x \le y \le N, t−y+x≥0t - y + x \ge 0, 1≤t≤10181 \le t \le 10^{18})
  • 4 x y: x≤i≤yx \le i \le y인 모든 ii에 대해 Ai=⌊Ai⌋A_i = \lfloor \sqrt{A_i} \rfloor로 둔다. (1≤x≤y≤N1 \le x \le y \le N)

입력

첫째 줄에 수열의 크기 NN과 쿼리의 개수 QQ가 주어진다. (1≤N≤100,0001 \le N \le 100,000, 1≤Q≤500,0001 \le Q \le 500,000)

둘째 줄에는 A1,A2,…,ANA_1, A_2, \ldots, A_N이 주어진다. (1≤Ai≤10181 \le A_i \le 10^{18})

이후 QQ개의 줄에 위에서 설명한 것과 같은 쿼리가 주어진다.

출력

1 i 형태의 쿼리 결과를 쿼리가 주어진 순서대로 한 줄에 하나씩 출력한다.

예제1

  1. 예제 1

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