Pagini recente » Cod sursa (job #93343) | Cod sursa (job #1675725) | Cod sursa (job #1716014) | Cod sursa (job #638466) | Cod sursa (job #1145929)
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <deque>
using namespace std;
deque <int> dq;
int n, k, a[5000050], first, last;
long long s;
int main()
{
freopen("deque.in", "r", stdin);
freopen("deque.out", "w", stdout);
scanf("%d %d", &n, &k);
for(int i=1; i<=n; i++){
scanf("%d", &a[i]);
}
for(int i=1; i<=n; i++){
if(!dq.empty())
while(a[i]<a[dq.back()]){
dq.pop_back();
if(dq.empty())
break;
}
dq.push_back(i);
first = dq.front();
last = dq.back();
if(dq.front() <= i-k)
dq.pop_front();
if(i>=k)
s+= a[dq.front()];
}
printf("%lld\n", s);
return 0;
}