题目背景
新丰美酒斗十千,咸阳游侠多少年。相逢意气为君饮,系马高楼垂柳边。
——王维《少年行》
题目描述
给定 $1$ 个长度为 $n$ 的序列 $a$,有如下操作:
- 每次选择 $2$ 个位置 $i,j$,将 $a_i$ 和 $a_j$ 均减 $1$。如果 $i=j$,则 $a_i$ 值只减 $1$ 次。
问将 $a$ 序列全部减为 $0$ 所需的最少次数,并输出字典序最小的方案。
注:字典序最小指将所有输出的数拼接成一个序列,且使得该序列字典序尽可能小。
输入格式
第一行,一个正整数 $n$, 表示数列的长度。
第二行,包含 $n$ 个非负整数 $a_i$,表示 $a$ 序列。
输出格式
第一行,一个整数 $k$ 表示最少的操作次数。
接下来 $k$ 行,输出字典序最小的方案。每行 $2$ 个整数 $i,j$,表示一次操作。
输入输出样例 #1
输入 #1
4
3 1 3 5
输出 #1
6
1 2
1 4
1 4
3 4
3 4
3 4
说明/提示
对于 $100\%$ 的数据,$1\le n\le 10^5$,$1\le \sum_{i=1}^n a_i\le 10^6$。
\begin{array}{|c|c|} \hline \textbf{测试点} & \textbf{特殊性质} \\ \hline 1 & 1\le n\le 6\textbf{,}1\le a_i\le 6 \\ \hline 2 & \forall i\in (1,n], a_i\le a_{i-1} \\ \hline 3\sim 10 & 1\le n\le 10^5\textbf{,}1\le \sum_{i=1}^n a_i\le 10^6 \\ \hline \end{array}