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