传统题 1000ms 256MiB

僵尸袭击

比赛已经结束。新提交将被视为补题提交,不计入比赛成绩。

题目背景

Games_OJYZOJ 联动啦!!!

题目描述

史蒂夫的村庄遭到了僵尸袭击!村庄有 nn 个防御点,每个防御点 ii 有防御值 did_i。僵尸会从第 11 个防御点开始进攻,直至攻破村庄。

史蒂夫现在有两种方式增强防御:

  1. 单独加固:消耗 11 颗钻石,选择一个防御点 ii 使其防御值 +1+1(使 di+1d_i+1)。
  2. 连锁加固:消耗 kk 颗钻石,选择一个区间 [l,r][l,r] 使区间内所有防御点防御值 +1+1(使 di[l,r]+1d_{i\in[l,r]}+1)。

僵尸们的总攻击力为 AA,也就是说只有防御点的防御值都不小于 AA,僵尸才无法入侵。史蒂夫希望用最少的钻石让村庄安全。

请你帮史蒂夫计算最少需要消耗多少颗钻石。

输入格式

第一行三个整数 n,A,kn,A,k

第二行 nn 个以空格隔开的整数 did_i,描述初始防御值。

输出格式

一个整数,表示最少需要消耗的钻石颗数。

输入输出样例

5 3 3
1 2 1 2 1
6

说明 / 提示

【样例解释】

  1. 连锁加固 [1,5][1,5],防御值变为 2,3,2,3,22,3,2,3,2,共消耗 33 颗钻石。
  2. 单独加固 1,3,51,3,5,防御值变为 3,3,3,3,33,3,3,3,3,共消耗 3+3=63+3=6 颗钻石,同时 diAd_i\ge A

【数据范围与约定】

对于 100%100\% 的数据,$1 \le n \le 10^6,1 \le A \le 10^9,1 \le k \le 100,1 \le d_i \le 10^9$。