File tree Expand file tree Collapse file tree 1 file changed +41
-0
lines changed
Binary_Search/1648.Sell-Diminishing-Valued-Colored-Balls Expand file tree Collapse file tree 1 file changed +41
-0
lines changed Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ public:
3
+ long long M = 1e9 +7 ;
4
+ int maxProfit (vector<int >& inventory, int orders)
5
+ {
6
+ sort (inventory.begin (), inventory.end ());
7
+ reverse (inventory.begin (), inventory.end ());
8
+ int left = 1 , right = inventory[0 ];
9
+ while (left <right)
10
+ {
11
+ int mid = left+(right-left)/2 ;
12
+ if (count (inventory, mid) <= orders)
13
+ right = mid;
14
+ else
15
+ left = mid+1 ;
16
+ }
17
+ long long x = left;
18
+ long long ret = 0 ;
19
+ for (int i=0 ; i<inventory.size (); i++)
20
+ {
21
+ if (inventory[i]<x) break ;
22
+ ret += (inventory[i]+x)*(inventory[i]-x+1 )/2 %M;
23
+ ret %= M;
24
+ }
25
+ ret += (x-1 )*(orders-count (inventory,x)) % M;
26
+ ret %= M;
27
+
28
+ return ret;
29
+ }
30
+
31
+ long long count (vector<int >&inventory, int k)
32
+ {
33
+ long long total = 0 ;
34
+ for (int i=0 ; i<inventory.size (); i++)
35
+ {
36
+ if (inventory[i]<k) break ;
37
+ total += inventory[i]-k+1 ;
38
+ }
39
+ return total;
40
+ }
41
+ };
You can’t perform that action at this time.
0 commit comments