编程题
### 问题描述
小桥是一名安全工程师,他需要开发一个密码破解程序。这个程序需要破解一个由 $n$ 个二进制数字组成的字符串 $a_1, a_2, \ldots, a_n$。其中,每个二进制数字都可以是 0 或 1。
小桥决定对这个字符串 $a$ 进行一些操作,以便更快地破解密码。他有两种操作可供选择:
- 将字符串 $a$ 中的某个子串翻转,需要花费 $x$ 个代币;
- 将字符串 $a$ 中的某个子串中的 0 和 1 进行互换,需要花费 $y$ 个代币。
请你帮忙计算,最少需要花费多少代币,才能将字符串 $a$ 中的所有数字都变成 1。注意,你可以对一个子串进行多次操作。
### 输入格式
第一行包含三个整数 $n, x$ 和 $y$,表示字符串长度以及翻转和取反操作的花费 ($1 \leq n \leq 10^5, 0 \leq x, y \leq 10^9$)。
第二行包含一个长度为 $n$,仅包含 0 和 1 的字符串 $a$。
### 输出格式
输出一个整数,表示将字符串 $a$ 中所有的 0 都变成 1 所需的最少花费。如果字符串已经全部为 1,则输出 0。
### 样例输入
```
6 3 1
011011
```
### 样例输出
```
2
```