题目描述
小A同学接到了n个需要完成的任务,这n个任务必须按照接到的顺序完成,每个任务的完成时间为ai。
由于任务非常艰巨,小A同学从老师那里领到了一张减负卡,用这张卡,小A可以从n个任务中任意的删除k个连续的任务,只需要完成剩余的任务。
请问,小A完成所有任务的总时间最少是多少?
输入格式
第1行,有两个整数n和k(1≤n≤106,0≤k≤106)。
接下来有n个整数,每个整数ai表示每个任务的完成时间。(1≤ai≤1012)
输出格式
一个整数,表示小A任务完成的最少时间。
样例输入
5 2
1 3 2 5 4
样例输出
6
AC代码
#include<bits/stdc++.h>
using namespace std;
long long n,k,a[1000001],m,sum;
int main(){
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>a[i];
sum+=a[i];
a[i]=a[i-1]+a[i];
if(i>=k){
m=max(m,a[i]-a[i-k]);
}
}
cout<<sum-m;
return 0;
}