#L4847. 「POI2020 R2」Marudny Bajtazar

    ID: 4034 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>字符串搜索枚举其他线性代数位运算滑动窗口子串编码

「POI2020 R2」Marudny Bajtazar

题目描述

题目译自 XXVII Olimpiada Informatyczna – II etap Marudny Bajtazar

圣诞节即将来临,Bajtazar 决定购买新的装饰品来装点自己的家。今年,他想尝试极简风格,计划买一条只有绿色和红色两种颜色的灯链。于是,他前往附近的灯饰店,请店主展示双色灯链。

然而,多年在字节王国从事各种工作的经历,让 Bajtazar 养成了对任何事物(哪怕是最琐碎的)都有自己看法的习惯,而且他从不吝于表达意见(即便没人愿意听)。特别是在时尚和美学方面,他的观念尤为固执,这对那些接待过他的店主来说尤为头疼,因为他们总是要听他抱怨商品哪里不尽如人意。

这次也不例外:Bajtazar 盯着店主展示的灯链看了半天,终于开口说:「总体来说,这条灯链还不错,但整体美感被一个问题破坏了——链条里没有一段连续四个灯泡的片段,颜色依次是红-绿-绿-红。」由于店主没有其他灯链可供选择,他决定更换其中一个灯泡的颜色,以满足这个要求。

Bajtazar 满意地点了点头,但没过多久又说:「现在还差一段颜色为绿-红-绿-绿-红的片段。」店主又换了一个灯泡的颜色。Bajtazar 接着说:「现在看起来很美,但还缺少另一个对颜色搭配很重要的片段。」

虽然 Bajtazar 非常耐心地解释为什么灯链还不完美,但他担心店主更换灯泡颜色的方式过于随意,可能无法快速达到目标。为了更高效地解决问题,他请你帮忙编写一个程序,帮助他快速找到灯链中缺失的、影响他美感的片段。作为第一步,请你为他编写一个程序,计算给定灯链中未出现的最短颜色片段的长度。


输入格式

输入的第一行包含两个整数 nnmm (1n100000,0m10000)(1 \leq n \leq 100000, 0 \leq m \leq 10000),用单个空格分隔,分别表示灯链中灯泡的数量和店主更换颜色的次数。第二行包含一个长度为 nn 的字符串,由字符 01 组成,表示灯链中各灯泡的颜色(例如 0 表示红色,1 表示绿色)。

接下来的 mm 行描述颜色更换操作,每行包含一个整数 aia_i (1ain)(1 \leq a_i \leq n),表示店主更换了第 aia_i 个灯泡的颜色。


输出格式

输出应包含正好 m+1m+1 行,每行包含一个整数。第 ii 行表示在店主完成前 i1i-1 次更换后,灯链颜色编码字符串中未出现的最短子字符串(由 01 组成)的长度。


样例 1

输入

6 2
001010
6
2

输出

2
3
2

解释
在字符串 001010 中,未出现的最短子字符串是 11,长度为 22。更换第六个字符后得到 001011,此时长度为 1122 的所有子字符串都已出现,但长度为 33 的子字符串 110 未出现。更换第二个字符后得到 011011,此时未出现的最短子字符串是 00,长度为 22


样例 2

见附加文件下 mar1.inmar1.out

该样例满足 n=5,m=0n=5, m=0,灯链为 10000


样例 3

见附加文件下 mar2.inmar2.out

该样例满足 n=500,m=2n=500, m=2,初始灯链为 000...0(全为 0),更换第一个和最后一个灯泡;


样例 4

见附加文件下 mar3.inmar3.out

该样例满足 n=m=10000n=m=10000,初始灯链为 1000...0(开头为 1,后面全为 0),依次更换所有灯泡。


数据范围与提示

详细子任务附加限制及分值如下表所示。

子任务 附加限制 分值
1 n,m1000n, m \leq 1000 46
2 无附加限制 54