#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
#define ordered_set tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update>
#define int long long
int a[300005], dp[300005];
vector<int> vec;
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n, k, sum=0, mx=0;
cin >> n >> k;
for (int i=1; i<=n; i++)
{
cin >> a[i];
if (dp[i-1]+a[i]<0)
{
vec.push_back(mx);
dp[i]=mx=0;
}
else
{
dp[i]=dp[i-1]+a[i];
mx=max(mx, dp[i]);
}
}
vec.push_back(mx);
sort(vec.begin(), vec.end());
for (int i=max(0LL, (int)vec.size()-k); i<vec.size(); i++)
sum+=vec[i];
cout << sum;
}
# | 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... |