세 수의 곱
시간 제한5초메모리 제한128 MB
배열의 한 값을 바꾸는 갱신과 구간 안 서로 다른 세 위치가 만드는 모든 삼중곱의 합을 묻는 질의를 처리합니다.
문제
한 선생님이 학생들의 계산 능력을 확인하려고 한다. 삼중곱을 서로 다른 세 위치에 있는 세 수의 곱으로 정의하자.
선생님은 칠판에 자연수 개를 한 줄로 적는다. 이후 선생님은 어떤 수를 다른 자연수로 바꾸거나, 칠판의 특정 구간에 있는 수들로 만들 수 있는 모든 삼중곱의 합을 물어본다. 서로 다르다는 것은 값이 아니라 위치를 기준으로 한다. 즉 고른 두 수의 값이 같아도 위치가 다르면 서로 다른 선택으로 본다.
모든 질의에 답하여라.
입력
첫 줄에 테스트 케이스의 수 가 주어진다(여기서는 ).
각 테스트 케이스는 다음과 같이 주어진다.
- 자연수 ()이 한 줄에 주어진다.
- 다음 줄에 칠판의 처음 수 개가 공백으로 구분되어 주어진다.
- 다음 줄에 연산의 수 ()가 주어진다.
- 그다음 개의 줄에 각 연산이 다음 형식으로 주어진다.
Z a b(, ): 위치 의 수를 자연수 로 바꾼다.Q a b(): 구간 에 있는 수들로 만들 수 있는 모든 삼중곱의 합을 구한다.
어느 순간에도 칠판에 있는 모든 수의 합은 백만()을 넘지 않는다.
출력
각 Q 연산마다 한 줄에 자연수 하나를 출력한다. 질의한 구간에서 서로 다른 세 위치를 골라 만들 수 있는 모든 삼중곱의 합이다.
힌트
칠판이 일 때 구간 에 대한 첫 질의의 답은 이다. 두 번째 질의의 구간에는 수가 두 개뿐이라 삼중곱을 만들 수 없으므로 답은 이다. 위치 의 수를 로 바꾸면 칠판은 가 되고, 구간 에 대한 세 번째 질의의 답은 이다.