Pagini recente » Cod sursa (job #1592508) | Cod sursa (job #2861981) | Cod sursa (job #1331757) | Cod sursa (job #1445518) | Cod sursa (job #1997837)
#include <iostream>
#include <cstdio>
using namespace std;
int x[5000001], Deque[5000001];
int n, k, i, Front, Back;
long long s;
int main()
{
freopen("deque.in", "r", stdin);
freopen("deque.out", "w", stdout);
scanf("%d%d", &n, &k);
for(i=1; i<=n; ++i) scanf("%d", &x[i]);
Front=1; Back=0;
for(i=1; i<=n; ++i)
{
/*printf("FRONT: %d BACK: %d\nDEQUE:\n", Front, Back);
for(int j=Front; j<=Back; ++j) printf("%d ", x[Deque[j]]);
printf("\n\n");*/
while(Front<=Back && x[i]<=x[Deque[Back]]) --Back;
Deque[++Back]=i;
if(Deque[Front]==i-k) ++Front;
if(i>=k) s=s+x[Deque[Front]];
}
printf("%d", s);
return 0;
}