#include <stdio.h>
#include <iostream>
#include <queue>
#include <vector>
#include <map>
#include <set>
#include <stdio.h>
#include <math.h>
using namespace std;
#define MAX_N 100010
long long my_abs(long long a)
{
return a > 0 ? a : -a;
}
struct element {
int left;
int right;
long long weight;
};
element e_array[MAX_N + 5];
void element_erase(int idx) {
if(idx < 0) {
return ;
}
int left = e_array[idx].left;
int right = e_array[idx].right;
if(left >= 0) {
e_array[left].right = right;
}
if(right >= 0) {
e_array[right].left = left;
}
return ;
}
int main()
{
int N;
int M;
long long val, pre_val;
int real_cnt = 0;
long long sub_sum = 0;
long long tot_sum = 0;
set<pair<long long, int> > heap;
int cnt = 0;
scanf("%d%d", &N, &M);
//scanf("%I64d", &pre_val);
for(int i = 0; i < N; ++i) {
//val = pre_val;
//scanf("%I64d", &pre_val);
//val = pre_val - val;
scanf("%d", &val);
if((val < 0 && sub_sum > 0) || (val > 0 && sub_sum < 0)) {
if(sub_sum >= 0) {
++real_cnt;
}
if(cnt > 0 || sub_sum > 0) {
e_array[cnt].left = cnt - 1;
e_array[cnt].weight = sub_sum;
e_array[cnt].right = cnt + 1;
++cnt;
}
sub_sum = 0;
}
sub_sum += val;
tot_sum += val > 0 ? val : 0;
}
if(sub_sum > 0) {
e_array[cnt].left = cnt - 1;
e_array[cnt].weight = sub_sum;
e_array[cnt].right = -1;
++cnt;
++real_cnt;
}
e_array[cnt - 1].right = -1;
for(int i = 0; i < cnt; ++i) {
heap.insert(pair<long long, int>(my_abs(e_array[i].weight), i));
}
for(; M < real_cnt; ++M) {
set<pair<long long, int> >::iterator h_it = heap.begin();
int w_idx = h_it->second;
int w_idx_left = e_array[w_idx].left;
int w_idx_right = e_array[w_idx].right;
long long w = 0;
tot_sum -= h_it->first;
int flag = 0;
if(w_idx_left != -1) {
w += my_abs(e_array[w_idx_left].weight);
heap.erase(pair<long long, int>(my_abs(e_array[w_idx_left].weight), w_idx_left));
element_erase(w_idx_left);
} else {
flag = 1;
}
if(w_idx_right != -1) {
w += my_abs(e_array[w_idx_right].weight);
heap.erase(pair<long long, int>(my_abs(e_array[w_idx_right].weight), w_idx_right));
element_erase(w_idx_right);
} else {
flag = 1;
}
w -= my_abs(e_array[w_idx].weight);
if(e_array[w_idx].weight > 0 && flag == 1) {
element_erase(w_idx);
} else {
heap.insert(pair<long long, int>(w, w_idx));
e_array[w_idx].weight = w;
}
heap.erase(h_it);
}
cout << tot_sum << endl;
return 0;
}