1972C - Permutation Counting - CodeForces Solution


binary search constructive algorithms greedy implementation math sortings

Please click on ads to support us..

Python Code:

def d():
    n, k = list(map(int, input().split()))
    a = list(map(int, input().split()))
    a.sort()
    curr = a[0]
    for i in range(1, n):
        c = min(a[i]-curr, k//i)
        curr += c
        k -= c*i
        if k == 0:
            break
    return (curr*n+(k+sum(x > curr for x in a)))-(n-1)
     
for i in range(int(input())):
    print(d())


Comments

Submit
0 Comments
More Questions

1644B - Anti-Fibonacci Permutation
1610A - Anti Light's Cell Guessing
349B - Color the Fence
144A - Arrival of the General
1106A - Lunar New Year and Cross Counting
58A - Chat room
230A - Dragons
200B - Drinks
13A - Numbers
129A - Cookies
1367B - Even Array
136A - Presents
1450A - Avoid Trygub
327A - Flipping Game
411A - Password Check
1520C - Not Adjacent Matrix
1538B - Friends and Candies
580A - Kefa and First Steps
1038B - Non-Coprime Partition
43A - Football
50A - Domino piling
479A - Expression
1480A - Yet Another String Game
1216C - White Sheet
1648A - Weird Sum
427A - Police Recruits
535A - Tavas and Nafas
581A - Vasya the Hipster
1537B - Bad Boy
1406B - Maximum Product