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

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

세 수의 곱

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

요약
배열의 한 값을 바꾸는 갱신과 구간 안 서로 다른 세 위치가 만드는 모든 삼중곱의 합을 묻는 질의를 처리합니다.
난이도

보통10점 중 6점

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

문제

한 선생님이 학생들의 계산 능력을 확인하려고 한다. 삼중곱을 서로 다른 세 위치에 있는 세 수의 곱으로 정의하자.

선생님은 칠판에 자연수 nn개를 한 줄로 적는다. 이후 선생님은 어떤 수를 다른 자연수로 바꾸거나, 칠판의 특정 구간에 있는 수들로 만들 수 있는 모든 삼중곱의 합을 물어본다. 서로 다르다는 것은 값이 아니라 위치를 기준으로 한다. 즉 고른 두 수의 값이 같아도 위치가 다르면 서로 다른 선택으로 본다.

모든 질의에 답하여라.

입력

첫 줄에 테스트 케이스의 수 ZZ가 주어진다(여기서는 Z=1Z = 1).

각 테스트 케이스는 다음과 같이 주어진다.

  • 자연수 nn (1≤n≤2000001 \le n \le 200000)이 한 줄에 주어진다.
  • 다음 줄에 칠판의 처음 수 nn개가 공백으로 구분되어 주어진다.
  • 다음 줄에 연산의 수 qq (1≤q≤2000001 \le q \le 200000)가 주어진다.
  • 그다음 qq개의 줄에 각 연산이 다음 형식으로 주어진다.
    • Z a b (1≤a≤n1 \le a \le n, b>0b > 0): 위치 aa의 수를 자연수 bb로 바꾼다.
    • Q a b (1≤a≤b≤n1 \le a \le b \le n): 구간 [a,b][a, b]에 있는 수들로 만들 수 있는 모든 삼중곱의 합을 구한다.

어느 순간에도 칠판에 있는 모든 수의 합은 백만(10610^6)을 넘지 않는다.

출력

각 Q 연산마다 한 줄에 자연수 하나를 출력한다. 질의한 구간에서 서로 다른 세 위치를 골라 만들 수 있는 모든 삼중곱의 합이다.

힌트

칠판이 [1,3,2,2][1, 3, 2, 2]일 때 구간 [1,4][1, 4]에 대한 첫 질의의 답은 1⋅3⋅2+1⋅3⋅2+1⋅2⋅2+3⋅2⋅2=281\cdot3\cdot2 + 1\cdot3\cdot2 + 1\cdot2\cdot2 + 3\cdot2\cdot2 = 28 이다. 두 번째 질의의 구간에는 수가 두 개뿐이라 삼중곱을 만들 수 없으므로 답은 00이다. 위치 11의 수를 22로 바꾸면 칠판은 [2,3,2,2][2, 3, 2, 2]가 되고, 구간 [1,3][1, 3]에 대한 세 번째 질의의 답은 2⋅3⋅2=122\cdot3\cdot2 = 12이다.

예제1

  1. 예제 1

    입력
    1
    4
    1 3 2 2
    4
    Q 1 4
    Q 1 2
    Z 1 2
    Q 1 3
    
    예상 출력
    28
    0
    12