luogu#P8919. 『MdOI R5』Message

『MdOI R5』Message

题目描述

小 A 有一个群。这个群正在玩一个小游戏:给出一个函数 ff,从某一个时间点起,发送第 xx 条消息,而 f(x)=1f(x)=1 的群友会受到一个小惩罚。当群内消息总数达到 mm 时游戏结束。

但小 A 是个话痨,这段时间他在这个群发了 nn 条消息,他发的第 ii 条消息在整个消息记录里是第 aia_i 条消息。

但是小 A 不想受到惩罚,而小 A 恰好是管理员,他可以撤回任何时刻、任何群成员发的任何消息,注意这会导致这条消息之后的消息排名改变。

但是撤回消息太多容易被当成暴政,因此他要尽可能减少撤回信息次数,不管是自己的还是别人的。

接下来你也猜到你要干什么了:假如其他群成员不操作,给出 nn、函数 ffaia_i,求出他至少要撤回几条消息。

输入格式

输入的第一行有两个正整数 n,mn,m,表示他的消息数量以及群内消息数量总数。

第二行是一个长为 mm01 串 ff,其第 iif(i)f(i) 表示发第 ii 条消息的群成员是否要受到惩罚。

第三行有 nn 个正整数 a1,a2,,ana_1,a_2,\ldots,a_n,表示每条消息的初始排名。保证数列 aa 严格递增,且 1aim1\le a_i\le m

输出格式

输出一行一个整数 ansans 表示至少撤回几条消息才能让小 A 不被惩罚。

4 11
01101010001
2 6 8 11

2

提示

【样例解释】

下面给出一种可能的方式:

  • 小 A 先撤回第 11 条消息(群友发的),他的四条消息在消息记录里现在是第 1,5,7,101,5,7,10 条。
  • 然后撤回第 55 条消息(他自己发的),剩下三条消息在消息记录里现在是第 1,6,91,6,9 条。

此时三条消息满足 f(1)=f(6)=f(9)=0f(1)=f(6)=f(9)=0,符合题意。

可以证明无法仅撤回一条消息达成要求。

【数据范围】

Subtask nn\le mm\le 特殊性质 分值
1 1717 1717 1515
2 100100
3 10310^3 10410^4 2020
4 10510^5 n=mn=m 88
5 10510^5 10610^6 A 1212
6 3030
  • 特殊性质 A:小 A 没有连发两条消息。

对于全部数据,1n1051\le n\le 10^51aim1061\le a_i\le m\le 10^6aia_i 严格递增,f(i){0,1}f(i)\in \{0,1\}