CF1923F.Shrink-Reverse

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

You are given a binary string ss of length nn (a string consisting of nn characters, and each character is either 0 or 1).

Let's look at ss as at a binary representation of some integer, and name that integer as the value of string ss . For example, the value of 000 is 00 , the value of 01101 is 1313 , "100000" is 3232 and so on.

You can perform at most kk operations on ss . Each operation should have one of the two following types:

  • SWAP: choose two indices i<ji < j in ss and swap sis_i with sjs_j ;
  • SHRINK-REVERSE: delete all leading zeroes from ss and reverse ss .

For example, after you perform SHRINK-REVERSE on 000101100, you'll get 001101.What is the minimum value of ss you can achieve by performing at most kk operations on ss ?

输入格式

The first line contains two integers nn and kk ( 2n51052 \le n \le 5 \cdot 10^5 ; 1kn1 \le k \le n ) — the length of the string ss and the maximum number of operations.

The second line contains the string ss of length nn consisting of characters 0 and/or 1.

Additional constraint on the input: ss contains at least one 1.

输出格式

Print a single integer — the minimum value of ss you can achieve using no more than kk operations. Since the answer may be too large, print it modulo 109+710^{9} + 7 .

Note that you need to minimize the original value, not the remainder.

输入输出样例

  • 输入#1

    8 2
    10010010

    输出#1

    7
  • 输入#2

    8 2
    01101000

    输出#2

    7
  • 输入#3

    30 30
    111111111111111111111111111111

    输出#3

    73741816
  • 输入#4

    14 1
    10110001111100

    输出#4

    3197

说明/提示

In the first example, one of the optimal strategies is the following:

  1. 10010010 SWAP\xrightarrow{\texttt{SWAP}} 00010110;
  2. 00010110 SWAP\xrightarrow{\texttt{SWAP}} 00000111.

The value of 00000111 is 77 .In the second example, one of the optimal strategies is the following:

  1. 01101000 SHRINK\xrightarrow{\texttt{SHRINK}} 1101000 REVERSE\xrightarrow{\texttt{REVERSE}} 0001011;
  2. 0001011 SWAP\xrightarrow{\texttt{SWAP}} 0000111.

The value of 0000111 is 77 .

首页