Pagini recente » Cod sursa (job #1881870) | Cod sursa (job #406716) | Cod sursa (job #3174749) | Cod sursa (job #2631044) | Cod sursa (job #1803714)
#include <iostream>
#include <cstdio>
#include <deque>
#define NMAX 5000005
using namespace std;
int a[NMAX], n, k;
long long s;
deque<int> D;
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 <= k - 1; i++)
{
while(!D.empty() && a[i] <= a[D.back()])
D.pop_back();
D.push_back(i);
}
for(int i = k; i <= n; i++)
{
while(!D.empty() && a[i] <= a[D.back()])
D.pop_back();
D.push_front(i);
if(!D.empty() && i >= D.back() + k)
D.pop_back();
cerr << a[D.back()] << " ";
s += a[D.back()];
}
printf("%lld", s);
return 0;
}