40 lines
795 B
C++
40 lines
795 B
C++
#include <cstdio>
|
|
#include <set>
|
|
#include <vector>
|
|
using ll = long long;
|
|
|
|
ll n,k,ans{};
|
|
std::vector<ll> a,s;
|
|
std::multiset<ll> se;
|
|
#define NV(v)do{printf("%s",#v);printf(" : %lld\n",(v));}while(false)
|
|
|
|
void addAns(ll n){
|
|
se.insert(n);
|
|
if(se.size()>k){
|
|
se.erase(--se.end());
|
|
}
|
|
}
|
|
|
|
int main(){
|
|
scanf("%lld%lld",&n,&k);
|
|
a.resize(n+1);
|
|
for(ll i=1;i<(ll)a.size();i++){
|
|
scanf("%lld",&a[i]);
|
|
}
|
|
s.resize(a.size());
|
|
for(ll i=1;i<(ll)s.size();i++){
|
|
s[i]=s[i-1]+a[i];
|
|
}
|
|
for(ll i=1;i<(ll)s.size();i++){
|
|
for(ll j=i;j<(ll)s.size();j++){
|
|
addAns(s[j]-s[i-1]);
|
|
}
|
|
}
|
|
for(ll i=1;i<=k;i++){
|
|
static auto it = se.begin();
|
|
ans+=*it;
|
|
// NV(*it);
|
|
it++;
|
|
}
|
|
printf("%lld\n",ans);
|
|
} |