Maximum Total Beauty of the Gardens LeetCode solution in Java

1
class Solution {
2
public long maximumBeauty(int[] flowers, long newFlowers, int target, int full, int partial) {
3
int n = flowers.length;
4
long[] prefix = new long[n + 1];
5
Arrays.sort(flowers);
6
for (int i = 0; i < n; ++i) prefix[i + 1] = prefix[i] + Math.min(flowers[i], target);
7
long res = 0;
8
for (int c = 0, i = n - 1; c <= n; ++c) {
9
long remain = prefix[n] - prefix[n - c] + newFlowers - c * (long) target, min = 0;
10
if (0 > remain) break;
11
i = Math.min(i, n - c - 1);
12
while (0 <= i
13
&& (target <= flowers[i] || flowers[i] * (long) (i + 1) - prefix[i + 1] > remain)) i--;
14
if (0 <= i) {
15
long dif = flowers[i] * (long) (i + 1) - prefix[i + 1];
16
min = Math.min(target - 1, flowers[i] + (remain - dif) / (i + 1));
17
if (i + 1 < n - c) min = Math.min(min, flowers[i + 1]);
18
}
19
res = Math.max(res, c * (long) full + min * (long) partial);
20
}
21
return res;
22
}
23
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0