[
sort
combinatorics
]
BinarySearch 0578 Paying Workers With Coins
Problem statement
https://binarysearch.com/problems/Paying-Workers-With-Coins/
Solution
Start with the biggest salary, imagine that we have x
options for it. Then for the second biggest salary if we have y
coins which good values, than we have y - 1
options and so on. In the end we multiply all these numbers.
Complexity
It is O(n log n + m log m + m log n)
for time, where n = len(C)
and m = len(S)
. Space is O(m + n)
.
Code
class Solution:
def solve(self, C, S):
S, C, ans = sorted(S), sorted(C), 1
for i, sal in enumerate(S[::-1]):
idx = len(C) - bisect.bisect_left(C, sal)
ans = (ans * (idx - i)) % (10**9 + 7)
return ans