Pagini recente » Cod sursa (job #1065277) | Cod sursa (job #2767314) | Cod sursa (job #1007279) | Cod sursa (job #1991708) | Cod sursa (job #1689705)
#include <iostream>
#include <cstdio>
#define MAXN 5000050
using namespace std;
int n, k, a[MAXN], rez;
int deck[MAXN], st=1, dr;
long long sum;
void add(int nr)
{
while (st<=dr && a[nr] < a[deck[dr]]) dr--;
deck[++dr] = nr;
}
int get(int nr)
{
while (deck[st] <= nr-k)
st++;
return deck[st];
}
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++)
add(i);
for (int i = k; i <= n; i++) {
add(i);
int rez = a[get(i)];
sum += rez;
}
printf("%lld", sum);
return 0;
}