#include <iostream>
using namespace std;
#include<vector>
#include<queue>
#define ll long long
int main() {
int n,k;
cin>>n>>k;
vector<int>v;
ll sumtime=0;
for(int i=0;i<n;i++){//从后往前开始遍历关卡的时间 当遇到k倍关卡时 说明获得了一个跳关机会
int a; //跳过遍历过的最大时间
cin>>a;
v.push_back(a);
sumtime+=a;
}
priority_queue<int>pq;
for(int i=v.size()-1;i>=0;i--){
if((i+1)%k==0&&!pq.empty()){
sumtime-=pq.top();
pq.pop();
}
pq.push(v[i]);
}
cout<<sumtime;
}
// 64 位输出请用 printf("%lld")

京公网安备 11010502036488号