수열과 쿼리 22

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

요약
수열과 갱신, 구간 합 쿼리가 주어질 때 각 쿼리마다 처음 k번째 갱신까지 적용한 상태에서의 구간 합을 구한다.
난이도

어려움10점 중 8점

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

문제

길이가 N인 수열 A1, A2, ..., AN이 주어진다. 다음 쿼리를 수행하는 프로그램을 작성하시오.

  • 1 i v: Ai = v로 변경한다.
  • 2 k i j: k번째 1번 쿼리까지 적용되었을 때, Ai, Ai+1, ..., Aj의 합을 출력한다.

입력

첫째 줄에 수열의 크기 N (1 ≤ N ≤ 100,000)이 주어진다.

둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 1,000,000)

셋째 줄에는 쿼리의 개수 M (1 ≤ M ≤ 100,000)이 주어진다.

넷째 줄부터 M개의 줄에는 쿼리가 한 줄에 하나씩 주어진다. 1번 쿼리의 경우 1 ≤ i ≤ N, 1 ≤ v ≤ 1,000,000이고, 2번 쿼리의 경우 1 ≤ i ≤ j ≤ N이고, 0 ≤ k ≤ (쿼리가 주어진 시점까지 있었던 1번 쿼리의 수)이다.

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

출력

모든 2번 쿼리마다 합을 출력한다.

예제1

  1. 예제 1

    입력
    5
    1 2 3 4 5
    7
    1 2 5
    2 0 1 3
    2 1 1 3
    1 4 2
    2 0 2 5
    2 1 2 5
    2 2 2 5
    
    예상 출력
    6
    9
    14
    17
    15