Pagini recente » Cod sursa (job #2477873) | Cod sursa (job #759660) | Cod sursa (job #684032) | Cod sursa (job #2160753) | Cod sursa (job #813358)
Cod sursa(job #813358)
#include<stdio.h>
#include<iostream>
#include<stdlib.h>
using namespace std;
#define maxn 5000001
int v[maxn];
int a[maxn];
void del_front(int &start)
{
start++;
}
void del_back( int &start, int &finish, int &x) {
while ( (finish >= start) && (a[v[finish]]>= a[x]) ) finish--;
}
void insert_back( int &finish, int &x)
{
v[++finish]=x;
}
int main()
{
freopen("deque.in", "r", stdin);
freopen("deque.out", "w", stdout);
int n, k;
long long sum=0;
scanf("%d %d", &n, &k);
int start, finish,i;
start = 0;
finish = -1;
for( int i = 1; i<= n; ++i)
{
scanf("%d", &a[i]);
del_back( start, finish, i);
insert_back( finish, i);
if( v[start] == i - k )
del_front(start);
if( i >= k)
sum += a[ v[start]];
}
cout<<sum;
return 0;
}