Pagini recente » Cod sursa (job #3227388) | Cod sursa (job #1378827) | Cod sursa (job #1629865) | Cod sursa (job #1376270) | Cod sursa (job #1218308)
#include <iostream>
#include <cstdio>
#include <deque>
using namespace std;
typedef long long ll;
deque<ll> queue;
int a[5000010];
int n,k;
void solve(){
ll sum = 0;
for(int i = 0; i < n; i++){
if(queue.size() > 0 && (i - queue.front()) >= k)
queue.pop_front();
while(queue.size() > 0){
if(a[queue[queue.size() - 1]] >= a[i])
queue.pop_back();
else
break;
}
queue.push_back(i);
if(i > k - 2){
sum += (ll)a[queue.front()];
}
}
printf("%lld\n",sum);
}
int main(){
freopen("deque.in","r",stdin);
freopen("deque.out","w",stdout);
scanf("%d%d",&n,&k);
for(int i = 0; i < n; i++)
scanf("%d",&a[i]);
solve();
return 0;
}