diff --git a/src/7/20/T635780.cpp b/src/7/20/T635780.cpp index 05fce69..156159a 100644 --- a/src/7/20/T635780.cpp +++ b/src/7/20/T635780.cpp @@ -1,9 +1,19 @@ #include +#include #include using ll = long long; -ll n,k; -std::vector a; +ll n,k,ans{}; +std::vector a,s; +std::multiset se; +#define NV(v)do{printf("%s",#v);printf(" : %lld\n",(v));}while(0) + +void addAns(ll n){ + se.insert(n); + if(se.size()>k){ + se.erase(--se.end()); + } +} int main(){ scanf("%lld%lld",&n,&k); @@ -11,5 +21,20 @@ int main(){ 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); } \ No newline at end of file