Bánh mì

Đề bài

Mô tả

Một chiếc bánh mì được chia thành n phần, đánh số từ 1 đến n. Phần thứ i có độ ngon xi{0,1}.

Khi ăn các phần bánh, người ăn lần lượt chọn một phần bất kỳ trong số các phần còn lại và ăn nó. Nếu phần được chọn là phần thứ i (với độ ngon hiện tại là xi) thì:

  • Độ thoả mãn của người ăn tăng thêm xi;
  • Độ ngon của tất cả các phần còn chưa ăn cũng tăng thêm xi.

Độ thoả mãn ban đầu bằng 0.

Ví dụ, nếu ba phần có độ ngon [0,1,0]: ăn phần thứ hai trước thì độ thoả mãn thành 1 và các phần còn lại trở thành [1,_,1]; tiếp tục ăn phần thứ nhất thì độ thoả mãn thành 2 và còn lại [_,_,2]; ăn nốt phần cuối cho độ thoả mãn 4.

Cho q truy vấn, mỗi truy vấn gồm hai số lr. Với mỗi truy vấn, hãy tính độ thoả mãn lớn nhất có thể đạt được nếu chỉ ăn đúng các phần có chỉ số trong đoạn [l,r], theo một thứ tự tuỳ ý.

Các truy vấn độc lập với nhau: mỗi truy vấn đều bắt đầu từ chiếc bánh ban đầu. Vì kết quả có thể rất lớn, hãy in ra phần dư của nó khi chia cho 109+7.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên nq.
  • Dòng thứ hai chứa xâu gồm n ký tự '0' hoặc '1'; ký tự thứ i là độ ngon xi của phần thứ i.
  • q dòng tiếp theo, mỗi dòng chứa hai số nguyên liri mô tả một truy vấn.

Dữ liệu ra

In ra q dòng, dòng thứ i là đáp án của truy vấn thứ i, lấy phần dư cho 109+7.

Ràng buộc

  • 1n,q100000
  • xi{0,1}
  • 1lirin

Ví dụ

Input Output Giải thích
4 2
1011
1 4
3 4
14
3
Truy vấn 1: một thứ tự tối ưu là 1,4,3,2, cho độ thoả mãn 14. Truy vấn 2: đoạn [3,4] gồm hai phần đều có độ ngon 1, mọi thứ tự đều cho 3.
3 2
111
1 2
3 3
3
1
Khi tất cả các phần đều có độ ngon 1, mọi thứ tự đều cho cùng kết quả: đoạn độ dài 2 cho 3, đoạn độ dài 1 cho 1.
10 8
0110000110
3 3
1 10
4 4
1 8
1 2
9 10
2 10
3 9
1
960
0
224
2
2
480
112
Truy vấn 3 chỉ chứa một phần có độ ngon 0 nên đáp án bằng 0. Truy vấn 2 xét cả xâu: có 4 ký tự '1' và 6 ký tự '0'.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.400 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.2 gforth 0.7.3 gfortran 12.2.0 go 1.27.0 groovyc 5.1.1 javac 25.0.4 node 26.8.1 julia 1.12.7 kotlinc 2.4.10 lean 4.33.1 sbcl 2.2.9 lua 5.4.9 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.10 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.14.7 racket 8.7 ruby 4.0.6 rustc 1.98.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.3.3 tclsh 8.6 bun 1.4.0 deno 2.9.6 v 0.5.2 zig 0.16.0