P12660 [KOI 2023 Round 1] 积木堆叠

题目背景

试题来源:。中文翻译做了少量本土化修改。 按照[署名—非商业性使用—相同方式共享 4.0 协议国际版](https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh-hans)进行授权。

题目描述

正在进行一项积木堆叠的游戏。共有 $N$ 个可以向上堆积积木的位置,从第 $1$ 个格子到第 $N$ 个格子依次排列。 当前第 $i$ 个格子上堆积了 $A_i$ 个积木。由于当前堆积的形状杂乱无章,想要通过以下条件将其整理: - 每个格子上的积木数量要在 $L$ 到 $R$ 之间(包括 $L$ 和 $R$)。 - 每个格子上的积木数量要单调不减:对于 $1 \leq i \leq N - 1$,第 $i$ 个格子上的积木数量不应大于第 $i + 1$ 个格子的数量。 你可以将某个格子上的积木移动到相邻的格子中,反复进行操作以达成目标。现在需要判断是否可以实现目标。如果可以,还要输出最小的移动次数。

输入格式

第一行包含三个整数 $N$、$L$、$R$,以空格分隔。 第二行包含 $N$ 个整数 $A_1, A_2, \dots, A_N$,表示每个格子当前的积木数量。

输出格式

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

说明/提示

**限制条件** - $1 \leq N \leq 100$ - $0 \leq L \leq R \leq 10^9$ - $R - L \leq 100$ - $0 \leq A_i \leq 10^9 \quad (1 \leq i \leq N)$ - 所有输入的数值均为整数。 **子问题** 1. (7 分)$N \leq 50$, $R - L \leq 1$ 2. (6 分)$N \leq 4$, $R - L \leq 50$ 3. (11 分)$N \leq 10$, $\sum A_i \leq 10$ 4. (11 分)$N \leq 50$, $\sum A_i \leq 50$ 5. (30 分)$N \leq 50$, $R \leq 50$ 6. (10 分)$N \leq 50$, $R - L \leq 50$ 7. (25 分)无额外限制