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

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

배열과 연산

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

요약
배열에서 구간 덧셈, 구간 제곱근 내림, 구간 합 질의를 처리하며 각 합을 출력한다.
난이도

어려움10점 중 8점

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

문제

정수 nn개로 이루어진 배열 aa가 있다. 연산은 세 가지 종류가 있다.

  • "1 ll rr xx": [l,r][l, r]에 속한 각 ii에 대해 aia_i를 ai+xa_i + x로 바꾼다.
  • "2 ll rr": [l,r][l, r]에 속한 각 ii에 대해 aia_i를 ⌊ai⌋\lfloor \sqrt{a_i} \rfloor로 바꾼다.
  • "3 ll rr": [l,r][l, r]에 속한 모든 ii에 대해 aia_i의 합을 구해 출력한다.

주어진 연산을 처리하면서 모든 3번 연산의 답을 출력한다.

입력

첫째 줄에 두 정수 nn과 qq가 주어진다. (1≤n,q≤1051 \le n, q \le 10^5) 둘째 줄에 nn개의 정수 a1,…,ana_1, \ldots, a_n이 주어진다. 이어서 qq개의 줄에 걸쳐 각 줄에 연산이 하나씩 주어진다.

1≤ai,x≤1051 \le a_i, x \le 10^5, 1≤l≤r≤n1 \le l \le r \le n이 보장된다.

출력

3번 연산마다 구한 합을 한 줄에 하나씩 출력한다.

예제1

  1. 예제 1

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