Codeforces Round 520 (Div. 2) |
---|
Закончено |
JATC любит Бань-ми (вьетнамское блюдо). Его привязанность к Бань-ми настолько велика, что он ест Бань-ми каждый день на завтрак. Сегодня утром, как обычно, он купил Бань-ми, но собирается насладиться им необычным образом.
Сначала, он разбивает Бань-ми на $$$n$$$ кусочков, выкладывает их в ряд и нумерует от $$$1$$$ до $$$n$$$. Для каждого кусочка $$$i$$$ он определяет его вкусность как $$$x_i \in \{0, 1\}$$$. JATC собирается съесть все кусочки один за другим. Каждый раз он выбирает произвольный из оставшихся кусочков и съедает его. Пусть этот кусочек был под номером $$$i$$$, тогда его удовольствие от Бань-ми увеличивается на $$$x_i$$$, вкусность каждого из оставшихся кусочков также увеличивается на $$$x_i$$$. Изначально удовольствие JATC равно $$$0$$$.
Например, пусть есть $$$3$$$ кусочка с вкусностями $$$[0, 1, 0]$$$. Если JATC съест второй кусочек, то его удовольствие станет равно $$$1$$$, а вкусность оставшихся кусочков будет равна $$$[1, \_, 1]$$$. Затем, если он съест первый кусочек, то его удовольствие станет равна $$$2$$$, а вкусность оставшихся кусочков станет $$$[\_, \_, 2]$$$. После того как JATC съест последний кусочек, его удовольствие станет равно $$$4$$$.
Однако JATC не хочет съесть сразу все кусочки, оставив часть на будущее. Он дал вам $$$q$$$ запросов, каждый из которых задаётся двумя целыми числам $$$l_i$$$ и $$$r_i$$$. Для каждого запроса выясните какое наибольшее удовольствие он может получить, если съест все кусочки в отрезке $$$[l_i, r_i]$$$ в каком-то порядке.
Все запросы независимы друг от друга. Так как ответ на запрос может быть очень большим, выведите его по модулю $$$10^9+7$$$.
Первая строка содержит два целых числа $$$n$$$ и $$$q$$$ ($$$1 \le n, q \le 100\,000$$$).
Вторая строка содержит строку из $$$n$$$ символов, каждый из которых равен или '0' или '1'. Символ под номером $$$i$$$ определяет вкусность $$$i$$$-го кусочка.
Каждая из следующих $$$q$$$ строк содержит по два целых числа $$$l_i$$$ или $$$r_i$$$ ($$$1 \le l_i \le r_i \le n$$$) — отрезок соответствующего запроса.
Выведите $$$q$$$ строчек, где $$$i$$$-я из них содержит одно целое число — ответ на $$$i$$$-й запрос по модулю $$$10^9 + 7$$$.
4 2
1011
1 4
3 4
14
3
3 2
111
1 2
3 3
3
1
В первом примере:
Во втором примере любой порядок поедания кусочков приведёт к одному и тому же ответу.
Название |
---|