#include <iostream>
using namespace std;
int arr[300009];
int n, k;
pair<long long, int> dp[300009][2];
pair<long long, int> gaymen(long long pen) {
for (int i = 1; i <= n; i++) {
dp[i][0] = max(dp[i - 1][0], dp[i - 1][1]);
dp[i][1] = max(
make_pair(dp[i - 1][1].first + arr[i], dp[i - 1][1].second),
// max(
make_pair(dp[i - 1][0].first + arr[i] - pen, dp[i - 1][0].second + 1)
// make_pair(dp[i - 1][1].first + arr[i] - pen, dp[i - 1][1].second + 1)
// )
);
}
return max(
dp[n][1],
dp[n][0]
);
}
long long r = 1;
int main() {
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
dp[0][1].first = -(1ll << 60);
cin >> n >> k;
for (int i = 1; i<= n; i++) {
cin >> arr[i];
r += abs(arr[i]);
}
long long l = 0;
while (l < r) {
long long mid = (l + r + 1) >> 1;
if (gaymen(mid).second >= k) {
l = mid;
} else {
r = mid - 1;
}
}
cout << gaymen(l).first + l * k;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |