16. RLE-сжатие

Не решаласьСредняя

RLE-сжатие — один из самых простых методов сжатия строки, основанный на сокращении подстрок, состоящих из одинаковых символов. Сжатие осуществляется следующим образом:

  • Строка разбивается на минимальное количество подстрок, состоящих из одинаковых символов. Например, abbcaaa превращается в строки a, bb, c, aaa.
  • Каждая из полученных строк превращается в строку, состоящую из числа и буквы. Числом является количество повторений символа в этой строке, буква берётся из первого символа обрабатываемой строки. Число не добавляется, если количество символов в строке равно единице. Из предыдущего массива строк мы получаем a, 2b, c, 3a.
  • Затем полученные строки конкатенируются в исходном порядке. В рассмотренном примере в итоге получим a2bc3a.

Вам дана строка ss, уже сжатая в RLERLE-формате. Назовём строку, из которой была получена ss, строкой tt. Вам даны qq запросов, каждый из них представлен целыми числами ll и rr. В каждом запросе вам необходимо найти длину сжатой подстроки t[lr]t[l \ldots r].

Формат ввода

В первой строке входного файла записана строка ss, состоящая из строчных букв латинского алфавита и цифр (1s1000000)(1 \le |s| \le 1\,000\,000). Гарантируется, что существует такая непустая строка tt, из которой RLERLE-сжатием получается строка ss. Также гарантируется, что в строке tt не было больше 10000000001\,000\,000\,000 одинаковых подряд идущих символов.

В следующей строке дано количество запросов qq (1q100000)(1 \le q \le 100\,000). Каждая из следующих qq строк содержит два числа lil_i и rir_i (1lirit)(1 \le l_i \le r_i \le |t|) — параметры запросов.

Формат вывода

Выведите qq чисел, каждое в отдельной строке — ответы на запросы в том порядке, в котором запросы были заданы во входных данных.

Ограничения

Ограничение времени

1 с

Ограничение памяти

512 МБ

Пример 1

Ввод
a2bc3a
5
1 7
5 7
1 2
3 5
4 4
Вывод
6
2
2
3
1

Пример 2

Ввод
x1000000000yz
3
2 1000000001
2 1000000002
5938493 15938493
Вывод
11
12
9

Теги

Нужно войти, чтобы отправить решение.Войти