#include #include using namespace std; typedef long long ll; const ll INF = 100000000000000000; using S = std::pair; S op(S a, S b) { return max(a, b); } S e() { return S(-INF, -1); } int main() { int n, k; cin >> n >> k; int a[500005]; for (int i = 0; i < n; i++) { cin >> a[i]; } ll o = 0; for (int i = n - 1; i >= k; i--) { o += a[i]; if (o <= 0) { n = i; o = 0; } } ll s[500005]; s[n] = 0; for (int i = n - 1; i >= 0; i--) { s[i] = s[i + 1] + a[i]; } atcoder::segtree seg(n); for (int i = 0; i < n; i++) { seg.set(i, S(s[i], i)); } int r = n; ll ans = 0; for (int i = k; i > 1; i--) { int l = seg.prod(i - 1, r).second; ans += (s[l] - s[r]) * i; r = l; } ans += s[0] - s[r]; cout << ans << endl; }