采用前缀和与越界计数算法,通过两次遍历解决问题。
设原序列执行完前 j 条指令后的水位为:
Pj=s+k=1∑jdk实验水箱的容量上限为 V,开机时水位为 s。
操作清单上按顺序记有 m 条指令,第 i 条记为整数 di:
执行指令时,把指令数值累加到当前水位上。称一次完整执行安全,意思是:任意前缀执行完后,水位始终落在闭区间 [0,V] 内(可以贴边,不能越界)。
实验员抄单时一定会把某一处相邻两条指令的次序抄反。对每个下标 i(1≤i<m),考虑交换第 i 条与第 i+1 条后,再按新顺序执行全部指令。
请统计有多少个下标 i,使得交换后的执行过程仍然安全。
注意:
第一行一个整数 m,表示指令条数。
第二行一个整数 V,表示水箱容量。
第三行一个整数 s,表示初始水位。
第四行 m 个整数 d1,d2,…,dm,表示指令序列。
本文件只含单组询问。
输出满足条件的下标个数,为一个整数。
输入
4
5
2
0 0 2 -4
输出
2
说明
交换下标 1:两条同为 0 的指令对调后仍安全;交换下标 2 后序列为 0,2,0,−4,亦安全;交换下标 3 后水位会跌破 0。故答案为 2。
输入
1
10
5
100
输出
0
© CodeFun2000 · 使用条款
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册