Skip to content

Commit 81c315e

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

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

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

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,3 +96,39 @@ var maxProfit = function(inventory, orders) {
9696

9797
return res
9898
};
99+
100+
// another
101+
102+
/**
103+
* @param {number[]} inventory
104+
* @param {number} orders
105+
* @return {number}
106+
*/
107+
const maxProfit = function (inventory, orders) {
108+
inventory.sort((a, b) => b - a)
109+
const mod = BigInt(1e9 + 7),
110+
n = BigInt(inventory.length)
111+
inventory = inventory.map((e) => BigInt(e))
112+
orders = BigInt(orders)
113+
let cur = BigInt(inventory[0]),
114+
res = 0n,
115+
i = 0n
116+
const min = (a, b) => (a > b ? b : a)
117+
while (orders) {
118+
while (i < n && inventory[i] === cur) i++
119+
let next = i === n ? 0n : inventory[i]
120+
let h = cur - next,
121+
r = 0n,
122+
cnt = min(orders, i * h)
123+
if (orders < i * h) {
124+
h = orders / i
125+
r = orders % i
126+
}
127+
let val = cur - h
128+
res = (res + (((cur + val + 1n) * h) / 2n) * i + val * r) % mod
129+
orders -= cnt
130+
cur = next
131+
}
132+
133+
return res
134+
}

0 commit comments

Comments
 (0)