atcoder#ARC086B. [ABC081D] Non-decreasing

[ABC081D] Non-decreasing

题目描述

すぬけ君は長さ N N の数列 a a を持っています。a a の (1 1 -indexedでの) i i 番目の数は ai a_{i} です。

すぬけ君は以下の操作を何度でも行うことができます。

  • 操作:1 1 以上 N N 以下の整数 x,y x,y を選び、ay a_y ax a_x を加算する。

すぬけ君はこの操作を 0 0 回以上 2N 2N 回以下行って a a が下記の条件を満たすようにしたいです。そのような操作手順の一例を示してください。 なお、この問題の制約下で、条件を満たすような操作の手順が必ず存在することが証明できます。

  • 条件:a1  a2  ...  aN a_1\ \leq\ a_2\ \leq\ ...\ \leq\ a_{N}

输入格式

入力は以下の形式で標準入力から与えられる。

N N a1 a_1 a2 a_2 ... ... aN a_{N}

输出格式

操作回数(これを m m とする)を 1 1 行目に出力せよ。 続く m m 行のうち i i 行目には i i 番目の操作で選んだ数 x,y x,y を空白区切りで出力せよ。 m m 0 0 以上 2N 2N 以下であり、m m 回の操作後に a a が条件を満たしていれば正解となる。

题目大意

一个 NN 个元素的整数序列,第 ii 项为 aia_i

小A可以做以下操作若干次:

  • 选择两个整数 iijj,将 aia_i 加到 aja_j 上去。

小A需要操作最多 2N2N 次(也可能是 00 次),以使得整数序列满足以下条件:

  • a1a2aNa_1 \le a_2 \le … \le a_N

可以证明,上述操作序列一定存在。请输出小A的操作序列。

3
-2 5 -1
2
2 3
3 3
2
-1 -3
1
2 1
5
0 0 0 0 0
0

提示

制約

  • 2  N  50 2\ \leq\ N\ \leq\ 50
  • 106  ai  106 -10^{6}\ \leq\ a_i\ \leq\ 10^{6}
  • 与えられる入力は全て整数

Sample Explanation 1

- 1 1 番目の操作により a = (2,5,4) a\ =\ (-2,5,4) となります - 2 2 番目の操作により a = (2,5,8) a\ =\ (-2,5,8) となり、条件を満たします

Sample Explanation 2

- 1 1 番目の操作により a = (4,3) a\ =\ (-4,-3) となり、条件を満たします

Sample Explanation 3

- すでに条件を満たしています