| Kotlin Heroes: Episode 12 |
|---|
| Закончено |
Есть несколько монет, расположенных в ряд, пронумерованных от $$$1$$$ слева направо. Существует три типа монет: золотые, серебряные и бронзовые.
Два игрока играют в игру; игроки ходят по очереди, и первый игрок делает первый ход. За один ход игрок выбирает любой из трех типов монет и забирает все монеты этого типа, которые еще не забрал другой игрок, себе. Игра продолжается до тех пор, пока все монеты не будут собраны. Оба игрока играют оптимально, и каждый из них хочет максимизировать количество монет, которое он получит.
Ваша задача — ответить на $$$q$$$ независимых запросов следующего вида: сколько монет может собрать первый игрок, если игра ведется только с монетами с индексами от $$$l$$$ до $$$r$$$ включительно.
Первая строка содержит строку $$$s$$$ ($$$1 \le |s| \le 10^5$$$), состоящую из символов G, S и/или B. G означает, что монета золотая. S означает, что монета серебряная. B означает, что монета бронзовая.
Вторая строка содержит одно целое число $$$q$$$ ($$$1 \le q \le 10^5$$$) — количество запросов.
Далее следуют $$$q$$$ строк; каждая из них содержит два целых числа $$$l$$$ и $$$r$$$ ($$$1 \le l \le r \le |s|$$$).
Для каждого запроса выведите одно целое число — количество монет, которые может собрать первый игрок, если игра ведется только с монетами с индексами от $$$l$$$ до $$$r$$$ включительно.
BGSSBGB51 72 61 53 34 7
5 3 3 1 3
Рассмотрим запросы из примера:
| Название |
|---|


