shelf: символ '*' — книга, символ '|' — книжная подпорка. Позиции нумеруются с нуля.
В списке ranges лежат запросы [left, right]. Каждый запрос рассматривает только участок полки с left по right включительно и спрашивает: сколько книг этого участка надёжно зажато, то есть имеют внутри участка хотя бы одну подпорку слева и хотя бы одну справа? Подпорки за границами участка не учитываются.
Верните список ответов в порядке запросов.
Запросов может быть очень много, поэтому пересчитывать каждый участок заново будет слишком медленно.shelf="|**|*|**", ranges=[[0, 5], [1, 7], [4, 7]] → [3, 1, 0]
На отрезке |**|*| все три книги стоят между подпорками. На отрезке **|*|** подпорки стоят на позициях 3 и 5, между ними одна книга. На отрезке *|** подпорка одна, поэтому ответ 0.
shelf="*|***|*", ranges=[[0, 6], [2, 4]] → [3, 0]
Во всей полке три книги зажаты между подпорками 1 и 5, а книги по краям не в счёт. В отрезке *** подпорок нет вовсе.
shelf) ≤ 3·10⁵shelf состоит только из символов '*' и '|'ranges) ≤ 10⁵ranges[i] = [left, right], 0 ≤ left ≤ right < len(shelf)shelf="|**|*|**", ranges=[[0, 5], [1, 7], [4, 7]]
[3, 1, 0]
«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 15 тестов на сервере, включая скрытые.