CF479B Towers
题目描述
众所周知,Berland 的所有孩子都喜欢玩积木。小 Petya 有 $n$ 座积木塔,每座塔由相同大小的积木叠起来。第 $i$ 座塔由 $a_{i}$ 块积木叠成。Petya 定义一组积木塔的不稳定度为最高塔和最低塔高度之差。例如,若 Petya 搭建了五座高度分别为 $(8, 3, 2, 6, 3)$ 的积木塔,这组积木塔的不稳定度就是 $6$(最高塔高度为 $8$,最低塔高度为 $2$)。
Petya 希望他的积木塔集合的不稳定度尽可能低。他能做的操作很简单:每次可以从某一座塔的顶端取下一个积木,然后放到自己集合中的另一座塔的顶端。请注意,Petya 绝不会把取下来的积木放回原塔,因为他认为这是浪费时间。
在上学之前,Petya 最多只能进行 $k$ 次这样的操作。Petya 不想上学迟到,所以你需要帮助他完成这个任务。
输入格式
第一行为两个正整数 $n$ 和 $k$,用空格分隔——塔的数量和最多可进行的操作次数。
第二行为 $n$ 个正整数 $a_{1},\ a_{2},\ \dots,\ a_{n}$,表示每座塔初始的高度。
输出格式
第一行输出两个用空格分隔的非负整数 $s$ 和 $m$($m \leq k$),其中 $s$ 表示经过最多 $k$ 次操作后所能得到的最小不稳定度,$m$ 表示完成这一目标所需的操作次数。
接下来的 $m$ 行,每行输出两个正整数 $i$ 和 $j$,均在 $1$ 到 $n$ 范围内,表示 Petya 从第 $i$ 座塔的顶端取下一个积木,并将其放到第 $j$ 座塔上(保证 $i \neq j$)。注意,操作过程中部分塔的高度可以减少到 $0$。
如果存在多种操作方案能使得达到最小不稳定度,你可以任选其一输出。
说明/提示
在第一个样例中,你需要进行两次操作——分别从第二座塔向第三座塔和第一座塔移动一个积木。操作后所有塔的高度变为 $6$,不稳定度为 $0$。
由 ChatGPT 5 翻译