#313. [CFCOI Collection 5] 翻翻乐
[CFCOI Collection 5] 翻翻乐
题目描述
你在玩一个单人游戏。
有一个长度为 的序列 ,其中 。
你每次可以选择一个 ,满足 ,然后将 均翻转(翻转前为 ,翻转后变为 )
无法选择 则游戏结束。可以证明游戏总是会在有限次操作后结束。
在游戏结束前,你最多操作多少次?答案对 取模。
为了增加游戏的趣味性,你有 次对 序列的修改。每次修改选择 ,将 翻转。你需要求出此时的最多操作次数。
注意:进行第 次操作时,是在前 次操作的基础上进行的。
输入格式
第 行, 个整数 。
第 行, 个整数 。
接下来 行,每行一个整数 ,表示一次操作。
输出格式
共 行,每行一个整数。
第一行输出初始序列的最多操作次数。
接下来 行,第 行输出第 次操作后最多操作次数。
答案对 取模。
样例
2 1
0 1
2
2
0
样例解释
对于初始时的序列 ,选择 ,操作后序列变为 ,再选择 ,操作后序列变为 ,此时无法再操作。
第一次操作后,序列变为 ,无法操作。
数据范围
对于 的数据,$1 \le n \le 5 \times 10^5,0 \le q \le 5 \times 10^5,0 \le a_i \le 1$。
| Subtask 编号 | 分值 | 依赖子任务 | ||
|---|---|---|---|---|
| 1 | 5 | - | ||
| 2 | 10 | |||
| 3 | 20 | 2 | ||
| 4 | 25 | - | ||
| 5 | 40 | 1 - 4 |