769B - News About Credit - CodeForces Solution


*special problem greedy two pointers *1200

Please click on ads to support us..

Python Code:

n = int(input())
l = list(map(int, input().split()))

a = [[l[i], i + 1] for i in range(n)]
a = [a[0]] + sorted(a[1:], key = lambda a: a[0], reverse = True)

f, t = 0, 1
p = []

while t < n:
	if a[f][0] == 0:
		t = 0
		break
	
	p.append([a[f][1], a[t][1]])	
	a[f][0] -= 1
	t += 1
	
	if a[f][0] == 0:
		f += 1
		
print(t - 1)

if t > 0:
	for i in p:
		print(i[0], i[1])


Comments

Submit
0 Comments
More Questions

WLDRPL Wildcard Replacement
1221. Split a String in Balanced Strings
1002. Find Common Characters
1602A - Two Subsequences
1555A - PizzaForces
1607B - Odd Grasshopper
1084A - The Fair Nut and Elevator
1440B - Sum of Medians
1032A - Kitchen Utensils
1501B - Napoleon Cake
1584B - Coloring Rectangles
1562B - Scenes From a Memory
1521A - Nastia and Nearly Good Numbers
208. Implement Trie
1605B - Reverse Sort
1607C - Minimum Extraction
1604B - XOR Specia-LIS-t
1606B - Update Files
1598B - Groups
1602B - Divine Array
1594B - Special Numbers
1614A - Divan and a Store
2085. Count Common Words With One Occurrence
2089. Find Target Indices After Sorting Array
2090. K Radius Subarray Averages
2091. Removing Minimum and Maximum From Array
6. Zigzag Conversion
1612B - Special Permutation
1481. Least Number of Unique Integers after K Removals
1035. Uncrossed Lines