Skip to content

Commit 2631ef2

Browse files
authored
Create 1648.Sell-Diminishing-Valued-Colored-Balls_v1.cpp
1 parent 3caf018 commit 2631ef2

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
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+
};

0 commit comments

Comments
 (0)