Universal Cup Judging System

Universal Cup

実行時間制限: 2.0 s メモリ制限: 1024 MB 満点: 100
統計

$n$명의 학생이 한 줄로 서 있으며, 왼쪽에서 $i$번째 학생은 숫자 $a_i$가 적힌 팻말을 들고 있습니다. 팻말에 적힌 숫자는 $1$부터 $n$까지의 서로 다른 정수입니다.

학생들은 $n - 1$번의 라운드로 구성된 "비교"라는 행사의 리허설을 하고 있습니다. 각 라운드마다 현재 줄의 가장 왼쪽에 있는 두 학생이 앞으로 나와 자신의 팻말에 적힌 숫자를 비교합니다. 더 큰 숫자를 가진 학생이 선발되며(줄로 돌아가지 않고 이후 라운드에도 참여하지 않습니다), 더 작은 숫자를 가진 학생은 줄의 가장 오른쪽으로 돌아갑니다.

두 가지 유형의 연산 $m$개를 처리해야 합니다:

  • 왼쪽에서 $x$번째와 $y$번째 위치에 있는 학생이 들고 있는 팻말을 서로 바꿉니다 ($1 \le x < y \le n$);
  • $l$과 $r$ ($1 \le l \le r < n$)이 주어질 때, 현재 학생들의 줄로 행사를 시뮬레이션하여 $l$번째 라운드부터 $r$번째 라운드까지(양 끝 포함) 선발된 학생들의 팻말에 적힌 숫자의 합을 계산합니다(시뮬레이션이 끝난 후 학생들은 이 쿼리 이전의 위치로 돌아갑니다).

입력

첫 번째 줄에 학생의 수와 연산의 수를 나타내는 두 정수 $n$과 $m$ ($2 \le n \le 10^5, 1 \le m \le 10^5$)이 주어집니다.

두 번째 줄에 처음에 왼쪽에서 오른쪽으로 학생들이 들고 있는 팻말의 숫자를 나타내는 $n$개의 서로 다른 정수 $a_1, a_2, \dots, a_n$ ($1 \le a_i \le n$)이 주어집니다.

다음 $m$개의 줄에는 각각 다음 두 가지 형식 중 하나로 연산이 설명됩니다:

  • C x y ($1 \le x < y \le n$): 왼쪽에서 $x$번째와 $y$번째 위치에 있는 학생이 들고 있는 팻말을 바꿉니다;
  • A l r ($1 \le l \le r < n$): 현재 줄로 행사를 시뮬레이션했을 때 $l$번째 라운드부터 $r$번째 라운드까지 선발된 학생들의 팻말에 적힌 숫자의 합을 질의합니다.

출력

각 A l r 연산마다 답을 나타내는 정수를 한 줄에 하나씩 출력합니다.

예제

입력

5 6
4 3 1 2 5
A 3 4
C 1 2
A 3 4
A 2 4
C 3 5
A 1 3

출력

8
8
10
12

노트

첫 번째 질의에서 왼쪽에서 오른쪽으로 팻말은 $[4, 3, 1, 2, 5]$입니다. 네 번의 라운드에서 선발되는 숫자는 순서대로 $4, 2, 5, 3$이므로, $3$번째 라운드부터 $4$번째 라운드까지의 합은 $5 + 3 = 8$입니다.

마지막 질의에서 왼쪽에서 오른쪽으로 팻말은 $[3, 4, 5, 2, 1]$입니다. 네 번의 라운드에서 선발되는 숫자는 순서대로 $4, 5, 3, 2$이므로, $1$번째 라운드부터 $3$번째 라운드까지의 합은 $4 + 5 + 3 = 12$입니다.

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.