SarthakKeshari / CPP-Questions-and-Solutions

This repository aims to solve and create new problems from different spheres of coding. A path to help students to get access to solutions and discuss their doubts.
MIT License
47 stars 132 forks source link

Productive Meeting #313

Closed ak-create closed 2 years ago

ak-create commented 2 years ago

Enter your question -

D. Productive Meeting An important meeting is to be held and there are exactly n people invited. At any moment, any two people can step back and talk in private. The same two people can talk several (as many as they want) times per meeting.

Each person has limited sociability. The sociability of the i-th person is a non-negative integer ai. This means that after exactly ai talks this person leaves the meeting (and does not talk to anyone else anymore). If ai=0, the i-th person leaves the meeting immediately after it starts.

A meeting is considered most productive if the maximum possible number of talks took place during it.

You are given an array of sociability a, determine which people should talk to each other so that the total number of talks is as large as possible.

Input The first line contains an integer t (1≤t≤1000) — the number of test cases.

The next 2t lines contain descriptions of the test cases.

The first line of each test case description contains an integer n (2≤n≤2⋅105) —the number of people in the meeting. The second line consists of n space-separated integers a1,a2,…,an (0≤ai≤2⋅105) — the sociability parameters of all people.

It is guaranteed that the sum of n over all test cases does not exceed 2⋅105. It is also guaranteed that the sum of all ai (over all test cases and all i) does not exceed 2⋅105.

Output Print t answers to all test cases.

On the first line of each answer print the number k — the maximum number of talks possible in a meeting.

On each of the next k lines print two integers i and j (1≤i,j≤n and i≠j) — the numbers of people who will have another talk.

If there are several possible answers, you may print any of them.

Enter link to the question(if question belongs to any online platform) -

https://codeforces.com/contest/1579/problem/D

Tags for the question(eg - Array, Basic, Stack, etc.) -

constructive algorithms, graphs ,greedy

ak-create commented 2 years ago

@SarthakKeshari assign this to me

SarthakKeshari commented 2 years ago

@ak-create, Kindly add your solution to "codeforces" folder. Deadline - 07/10/2021