题目 20436

积木堆叠

查看题解 ↗GitHub ↗如何评测
题号
20436
时间限制
1000 ms
内存限制
256 MB
标签
比赛CSP-S
来源
CSP-S 国外模拟赛 39 - T2

第 2 题 积木堆叠 (block)

时间限制 1.0 s · 空间限制 256 MB · 210 个测试点 · 全文比较(过滤行末空格及文末回车)

本题使用文件输入输出:输入文件 block.in,输出文件 block.out。

按照署名—非商业性使用—相同方式共享 4.0 协议国际版进行授权。

题目描述

正在进行一项积木堆叠的游戏。共有 NN 个可以向上堆积积木的位置,从第 1 个格子到第 NN 个格子依次排列。

当前第 ii 个格子上堆积了 AiA_i 个积木。由于当前堆积的形状杂乱无章,想要通过以下条件将其整理:

  • 每个格子上的积木数量要在 LL 到 RR 之间(包括 LL 和 RR)。
  • 每个格子上的积木数量要单调不减:对于 1≤i≤N−11 \le i \le N - 1,第 ii 个格子上的积木数量不应大于第 i+1i + 1 个格子的数量。

你可以将某个格子上的积木移动到相邻的格子中,反复进行操作以达成目标。现在需要判断是否可以实现目标。如果可以,还要输出最小的移动次数。

输入格式

第一行包含三个整数 NN、LL、RR,以空格分隔。

第二行包含 NN 个整数 A1,A2,…,ANA_1, A_2, \ldots, A_N,表示每个格子当前的积木数量。

输出格式

若无法达成目标,输出 −1-1。若可以达成目标,输出最小的积木移动次数。

样例

样例 1

输入:

文本
5 3 5
2 0 9 1 4

输出:

文本
7

样例 2

输入:

文本
10 3 8
2 7 9 10 2 2 2 8 3 8

输出:

文本
25

样例 3

输入:

文本
10 6 7
10 7 5 4 4 3 9 4 9 7

输出:

文本
20

样例 4

输入:

文本
3 2 3
1 1 1

输出:

文本
-1

提示

限制条件

  • 1≤N≤1001 \le N \le 100
  • 0≤L≤R≤1090 \le L \le R \le 10^9
  • R−L≤100R - L \le 100
  • 0≤Ai≤1090 \le A_i \le 10^9(1≤i≤N1 \le i \le N)
  • 所有输入的数值均为整数。

子问题

  1. (7 分)N≤50,R−L≤1N \le 50, R - L \le 1
  2. (6 分)N≤4,R−L≤50N \le 4, R - L \le 50
  3. (11 分)N≤10,∑Ai≤10N \le 10, \sum A_i \le 10
  4. (11 分)N≤50,∑Ai≤50N \le 50, \sum A_i \le 50
  5. (30 分)N≤50,R≤50N \le 50, R \le 50
  6. (10 分)N≤50,R−L≤50N \le 50, R - L \le 50
  7. (25 分)无额外限制

数据下载

题目 20436 的公开数据

正在读取文件列表…

常用命令

题目 20436 的 ROJ 命令

以下命令默认使用全局安装的 ROJ Skill,请在终端中直接执行;如果修改过 AGENT_HOME,请将命令中的 ~/.agents 替换为对应目录。