Skip to content

Commit cdab978

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

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

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

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,41 @@
1+
/**
2+
* @param {number[]} inventory
3+
* @param {number} orders
4+
* @return {number}
5+
*/
6+
const maxProfit = function(inventory, orders) {
7+
inventory = inventory.map(e => BigInt(e))
8+
orders = BigInt(orders)
9+
let l = 0n, r = BigInt(1e9 + 7)
10+
while(l < r) {
11+
const mid = l + (r - l) / 2n
12+
if(valid(mid)) l = mid + 1n
13+
else r = mid
14+
}
15+
16+
// console.log(l)
17+
const mod = BigInt(1e9 + 7)
18+
let t = l, res = 0n, cnt = 0n
19+
for(const e of inventory) {
20+
if(e <= t) continue
21+
cnt += e - t
22+
res = (res + (t + 1n + e) * (e - t) / 2n) % mod
23+
}
24+
25+
res = (res + (orders - cnt) * t) % mod
26+
27+
return res
28+
function valid(mid) {
29+
let res = 0n
30+
for(const e of inventory) {
31+
if(e > mid) res += e - mid
32+
}
33+
return res > orders
34+
}
35+
};
36+
37+
// another
38+
139
/**
240
* @param {number[]} inventory
341
* @param {number} orders

0 commit comments

Comments
 (0)