Розворот ABC#11816

Розворот ABC

2 секунди
256 мегабайтів
Дуже складна

Задано рядок , що складається з символів , та .

За одну операцію дозволяється вибрати два сусідніх елементи рядка s_is_{i+1}, які в такій послідовності дорівнюють , або , і поміняти їх місцями.

Знайдіть найбільшу кількість послідовних операцій, які можна виконати з рядком .

У цій задачі кожен тест містить кілька наборів вхідних даних. Вам потрібно розв'язати задачу незалежно для кожного такого набору.

Вхідні дані

У першому рядку задано одне ціле число (1\le T\le 10^5) — кількість наборів вхідних даних. Далі задано опис наборів вхідних даних.

У першому рядку кожного набору вхідних даних задано одне ціле число (1 \le n \le 10^6) — довжина рядка .

У другому рядку кожного набору вхідних даних задано рядок довжини , що складається з символів , та .

Гарантується, що сума по всім наборам вхідних даних одного тесту не перевищує 10^6.

Вихідні дані

Для кожного набору вхідних даних виведіть в окремому рядку одне ціле число — найбільшу кількість послідовних операцій, які можна виконати з рядком .

Приклади

Приклад 1

Loading
Loading

Примітка

У першому наборі вхідних даних першого прикладу можна виконати не більше ніж послідовні операції з рядком ABCCA. Одним з прикладів того, як послідовні операції можна виконати, є [ABCCA BACCA, BACCA BACAC, BACAC BAACC].

Оцінювання

Нехай  — сума по всім наборам вхідних даних одного тесту.

  1. ( бали): відповідь рівна або ;

  2. ( бали): n \le 3;

  3. ( балів): s_i \ne \texttt{C} для 1 \le i \le n;

  4. ( балів): має вигляд \texttt{AA}\ldots \texttt{AABB}\ldots \texttt{BBCC}\ldots \texttt{CC} (тобто x \cdot \texttt{A} + y \cdot \texttt{B} + z \cdot \texttt{C} для певних додатних , , );

  5. ( балів): s_is_{i+1} \ne \texttt{CA} для 1 \le i < n;

  6. ( балів): T = 1, n \le 12;

  7. ( балів): n \le 12;

  8. ( балів): K \le 2000;

  9. ( балів): без додаткових обмежень.