Codeforces Round 744 (Div. 3) |
---|
Закончено |
На встрече собрались $$$n$$$ человек. В каждый момент времени любые два человека могут отойти и поговорить наедине. Одни и те же два человека могут поговорить несколько (сколько угодно) раз за встречу.
У каждого человека есть ограниченная общительность. Общительность $$$i$$$-го человека равна неотрицательному целому числу $$$a_i$$$. Это означает, что после $$$a_i$$$ личных разговоров этот человек уходит со встречи (и больше ни с кем не разговаривает). Если $$$a_i = 0$$$, $$$i$$$-й человек уходит со встречи сразу после ее начала.
Встреча считается тем более продуктивной, чем больше в течение нее состоялось разговоров.
По данному массиву общительности $$$a$$$ определите, какие люди должны разговаривать друг с другом, чтобы суммарное количество разговоров было как можно больше.
В первой строке записано целое число $$$t$$$ ($$$1 \le t \le 1000$$$) — количество наборов входных данных.
В следующих $$$2t$$$ строках даны описания наборов входных данных.
В описании каждого набора данных первая строка содержит целое число $$$n$$$ ($$$2 \le n \le 2 \cdot 10^5$$$) — количество людей на встрече, а во второй строке через пробел перечислены $$$n$$$ целых чисел $$$a_1, a_2, \dots, a_n$$$ ($$$0 \le a_i \le 2 \cdot 10^5$$$) — параметры общительности всех людей.
Гарантируется, что сумма $$$n$$$ по всем наборам входных данных не превосходит $$$2 \cdot 10^5$$$. Также гарантируется, что сумма всех $$$a_i$$$ (по всем наборам входных данных и всем $$$i$$$) не превосходит $$$2 \cdot 10^5$$$.
Выведите $$$t$$$ ответов на все наборы входных данных.
В первой строке ответа выведите число $$$k$$$ — максимальное количество разговоров, которое возможно провести за встречу.
В каждой из следующих $$$k$$$ строк выведите через пробел по два целых числа $$$i$$$ и $$$j$$$ ($$$1 \le i, j \le n$$$ и $$$i \neq j$$$) — номера людей, между которыми состоится очередной разговор.
Если ответов несколько, выведите любой из них.
8 2 2 3 3 1 2 3 4 1 2 3 4 3 0 0 2 2 6 2 3 0 0 2 5 8 2 0 1 1 5 0 1 0 0 6
2 1 2 1 2 3 1 3 2 3 2 3 5 1 3 2 4 2 4 3 4 3 4 0 2 1 2 1 2 0 4 1 2 1 5 1 4 1 2 1 5 2
Название |
---|