Skip to content

Commit 533bc70

Browse files
authored
Update 1648-sell-diminishing-valued-colored-balls.js
1 parent 8e206dd commit 533bc70

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

1648-sell-diminishing-valued-colored-balls.js

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,3 +65,34 @@ const maxProfit = function (inventory, orders) {
6565

6666
return sum % mod
6767
}
68+
69+
// another
70+
71+
/**
72+
* @param {number[]} inventory
73+
* @param {number} orders
74+
* @return {number}
75+
*/
76+
var maxProfit = function(inventory, orders) {
77+
inventory.sort((a, b) => b - a)
78+
const mod = BigInt(1e9 + 7), n = BigInt(inventory.length)
79+
inventory = inventory.map(e => BigInt(e))
80+
orders = BigInt(orders)
81+
let cur = BigInt(inventory[0]), res = 0n, i = 0n
82+
const min = (a, b) => a > b ? b : a
83+
while(orders) {
84+
while(i < n && inventory[i] === cur) i++
85+
let next = i === n ? 0n : inventory[i]
86+
let h = cur - next, r = 0n, cnt = min(orders, i * h)
87+
if (orders < i * h) {
88+
h = orders / i
89+
r = orders % i
90+
}
91+
let val = cur - h
92+
res = (res + (cur + val + 1n) * h / 2n * i + val * r) % mod
93+
orders -= cnt
94+
cur = next
95+
}
96+
97+
return res
98+
};

0 commit comments

Comments
 (0)