属性检查 - 代码源竞赛平台

题目描述

蜗蜗正在进行一场冒险,他的力量和智力初始都为 00。冒险过程中有 nn 条记录,第 ii 条记录用整数 rir_i 表示,需要按照给定的顺序依次处理:

  • 如果 ri=0r_i=0,蜗蜗获得一个属性点,必须立即将力量或智力中的一项增加 11;
  • 如果 ri>0r_i>0,蜗蜗接受一次智力检查。当前智力不小于 rir_i 时,可以通过检查;
  • 如果 ri<0r_i<0,蜗蜗接受一次力量检查。当前力量不小于 −ri-r_i 时,可以通过检查。

无论是否通过检查,都要继续处理后面的记录。检查不会消耗属性,也不能改变记录的处理顺序。所有记录中恰好有 mm 条记录的值为 00。

请你求出蜗蜗最多能够通过多少次检查。

输入格式

第一行包含两个整数 nn 和 mm,分别表示记录数量和能够获得的属性点数量。

第二行包含 nn 个整数 r1,r2,…,rnr_1,r_2,\ldots,r_n,依次表示每条记录的内容。

输出格式

输出一行一个整数,表示最多能够通过的检查次数。

样例

6 2
0 1 -1 0 2 -1
2

样例解释

一种最优方案是将第一个属性点加给智力,将第二个属性点加给力量。

这样可以通过第 22 条记录中的智力检查和第 66 条记录中的力量检查,共通过 22 次检查。

数据范围

对于 100% 的数据,保证 1≤m≤50001\le m\le 5000,m<n≤2×106m<n\le 2\times 10^6,−m≤ri≤m-m\le r_i\le m,且恰好有 mm 个 ri=0r_i=0。