P12227 「WyOJ Round 1」炽 · 踏浪而歌

题目背景

> 新丰美酒斗十千,咸阳游侠多少年。相逢意气为君饮,系马高楼垂柳边。 > > ——王维《少年行》

题目描述

给定 $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$,表示一次操作。

说明/提示

对于 $100\%$ 的数据,$1\le n\le 10^5$,$1\le \sum_{i=1}^n a_i\le 10^6$,$a_i\ge 0$。 **注意:** $a_i$ 有可能等于 $0$。 | 测试点 | 特殊性质 | | :-----------: | :-----------: | | $1$ | $1\le n\le 6$,$1\le a_i\le 6$ | | $2$ | $\forall i\in (1,n], a_i\le a_{i-1}$ | | $3\sim 10$ | $1\le n\le 10^5$,$1\le \sum_{i=1}^n a_i\le 10^6$ |