#P8945. Inferno

    ID: 8090 远端评测题 777ms 512MiB 尝试: 0 已通过: 0 难度: 7 上传者: 标签>贪心单调队列2023洛谷原创O2优化

Inferno

Description

罗伯特 · 兰登在洗下但丁死亡面具上的丙烯石膏后,在背面发现了一行字:

哦,有着稳固智慧的人啊,
请注意这里的含义
就藏在晦涩的序列面纱之下。

下面有一行由 1,11,-1 组成的长度为 nn 的序列。面具经受了岁月的侵蚀,序列中有一些数已经模糊不清。幸运的是,面具下面有给出两条线索:

你只得往空缺的位置填 kk11,其余填入 1-1,需要最大化这个序列的最大子段和。

一个序列的最大子段和定义为,其在一段连续长度的区间内的最大和。形式化地,一个序列 aa 的最大子段和即为 $\max\limits_{l=1}^n\max\limits_{r=l}^n\left(\sum\limits_{i=l}^r a_i\right)$。

罗伯特 · 兰登希望在瘟疫扩散之前找到有关的线索。于是他找到了你。


【形式化题意】

给定一个只包含 1,0,1-1,0,1 的序列,求出往 00 的位置上填 kk11,其余填 1-1 后最大子段和的最大值。

Input Format

第一行两个正整数 n,kn,k

接下来一行 nn 个整数 ai{1,0,1}a_i\in\{-1,0,1\},其中 00 表示数字模糊不清。

Output Format

一行一个正整数,表示可能的最大子段和。

5 2
1 0 -1 0 0
2

Hint

【样例解释】

一种可行的方案是填入 {1,1,1}\{1,1,-1\},最大子段和为 22

【数据范围】

本题开启捆绑测试。

SubTask\text{SubTask} 分值 n,kn,k\le
00 44 2020
11 66 200200
22 1010 5×1035\times 10^3
33 3030 5×1055\times 10^5
44 5050 10710^7

对于 100%100\% 的数据,1n,k1071\le n,k\le10^7ai{1,0,1}a_i\in \{-1,0,1\}。保证 kk\le 序列中 00 的个数。

本题标程使用优化后的输入输出,在 O2 优化下最大点用时约 350350 ms,足以通过此题。如果您自认为您的程序复杂度正确,却超出时间限制,请使用更优的输入输出方式,或者优化常数。