#P1204. 饮水机

    ID: 216 传统题 1000ms 512MiB 尝试: 0 已通过: 0难度: 普及− ← 上一题 下一题 → 随机一题 上传者: 标签 模拟 分类讨论
显示设置

饮水机

饮水机

题目背景

集训队的走廊里只有一台饮水机。这台机器年纪比队长还大,水箱容量有限,接水的人一多水箱就会见底,见底之后还得先清洗滤芯才能继续用。队员们排成长队,谁也不想多等一秒。

题目描述

饮水机的水箱容量为 CC 毫升,一开始水箱是满的。机器出水与注水的速度都是 11 毫升每秒:接走 xx 毫升水需要 xx 秒,把空水箱重新加满需要 CC 秒。

这台机器还有一个毛病:水箱一旦见底,就必须先花 RR 秒清洗滤芯,清洗结束后水箱重新变满,才能继续出水。

有 nn 名队员按给定顺序依次来接水,第 ii 名队员需要 did_i 毫升水。机器按顺序为每个人服务,对第 ii 个人:

  • 如果水箱里剩余的水不少于 did_i 毫升,那么立刻接水,耗时 did_i 秒,水箱剩余水量减少 did_i 毫升;
  • 如果水箱里剩余的水少于 did_i 毫升,而 di≤Cd_i \le C,那么机器先花 RR 秒清洗水箱并把它加满,再为他接水 did_i 秒,这一过程共耗时 R+diR + d_i 秒,结束时水箱剩余 C−diC - d_i 毫升;
  • 如果 di>Cd_i > C,那么无论等多久他都接不满自己的水杯,这种情况被认定为机器无法完成任务。

请你判断任务能否完成:若可以,输出接完 nn 个人水杯所需的总秒数;否则输出 -1。

输入格式

从标准输入读入数据。

第一行三个整数 n,C,Rn, C, R。

第二行 nn 个整数 d1,d2,…,dnd_1, d_2, \dots, d_n,含义如题面所述。

输出格式

输出到标准输出。

输出一行一个整数,表示总耗时;若任务无法完成,输出 -1。

样例 1 输入

3 5 2
3 4 3

样例 1 输出

14

样例 1 解释

第 1 名队员需要 33 毫升,水箱中有 55 毫升,直接接水耗时 33 秒,水箱剩 22 毫升。

第 2 名队员需要 44 毫升,而水箱里只剩 22 毫升,于是先清洗 22 秒再加满,然后接水 44 秒,共 66 秒,水箱剩 11 毫升。

第 3 名队员需要 33 毫升,而水箱里只剩 11 毫升,同样先清洗 22 秒再加满,然后接水 33 秒,共 55 秒,水箱剩 22 毫升。

总耗时为 3+6+5=143 + 6 + 5 = 14 秒。

样例 2 输入

2 3 1
4 1

样例 2 输出

-1

数据范围

测试点编号 nn C,R,diC, R, d_i 特殊性质
1∼41 \sim 4 ≤10\le 10 ≤100\le 100 无
5∼85 \sim 8 ≤1000\le 1000 ≤106\le 10^6
9∼129 \sim 12 ≤105\le 10^5 ≤109\le 10^9 A
13∼1613 \sim 16 B
17∼2017 \sim 20 无

特殊性质 A:R=0R = 0。

特殊性质 B:所有 did_i 都不超过 CC,也就是说任务一定可以完成。

对于所有测试数据,1≤n≤1051 \le n \le 10^5,1≤C,R≤1091 \le C, R \le 10^9,1≤di≤1091 \le d_i \le 10^9。总耗时可能超过 231−12^{31} - 1。

提交说明

本题使用标准输入输出。程序应从标准输入读入数据,并将答案输出到标准输出。