#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int N, K;
cin >> N >> K;
vector<long long> A(N);
for (int i = 0; i < N; i++) cin >> A[i];
vector<long long> pos, neg;
for (int i = 0; i < N; ) {
long long s = 0;
int j = i;
if (A[i] >= 0) {
while (j < N && A[j] >= 0) s += A[j++];
pos.push_back(s);
} else {
while (j < N && A[j] < 0) s += A[j++];
neg.push_back(s);
}
i = j;
}
if (pos.empty()) {
cout << 0 << "\n";
return 0;
}
priority_queue<long long> pq;
long long ans = 0;
int m = pos.size();
for (long long x : pos) {
ans += x;
pq.push(x);
}
for (int i = 0; i + 1 < m; i++) {
pq.push(pos[i] + pos[i + 1] + neg[i]);
}
while ((int)pq.size() > K) {
ans -= pq.top();
pq.pop();
}
cout << ans << "\n";
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... |