Problem F

Masking greatly reduces the transmission of certain viruses. This is true for computer viruses as well. In order to protect binary data from infection, we must cover it up with masks!

Binary data can be represented as a string of $n$ $0$s and $1$s. A bitmask can be used to cover a portion of the data. Specifically, a bitmask of length $m \leq n$ can be used to cover $m$ consecutive bits in the data. To maximize protection, only well-fitting masks can be used. That is, each covered bit in the binary data is the opposite to the corresponding bit in the mask. For example, if the data is

\[ 1001\ 0110\ 1010 \]

then the mask $011$ can be used to cover positions $1$$3$. The mask $101$ can be used to cover positions $3$$5$ and $10$$12$.

The cost to produce a bitmask of length $i$ is $C_ i$. Fortunately, if you have already produced a particular bitmask, you can make as many copies as you wish for free! Thus, one can produce two masks of 101 for only $C_3$.

What is the minimum cost to cover a particular piece of binary data with bitmasks? Every bit in the data must be covered by exactly one bitmask.


The first line of input consists of a string of $0$s and $1$s representing the binary data. The length of the string $n$ satisfies $1 \leq n \leq 12$. The second line of input consists of $n$ integers $C_1, \ldots , C_ n$, where $1 \leq C_ i \leq 100$.


Output the minimum cost to produce the bitmasks to cover the binary data.

Sample Input 1 Sample Output 1
2 3 7 1 4 3 8 9
Sample Input 2 Sample Output 2
26 51 24 79 15 46 22 79 47 84 60 100

Please log in to submit a solution to this problem

Log in