Pagini recente » Cod sursa (job #1129609) | Cod sursa (job #2800665) | Cod sursa (job #1368922) | Cod sursa (job #1462908) | Cod sursa (job #793335)
Cod sursa(job #793335)
#include <cstdio>
#include <deque>
using std::deque;
deque<int> deck;
int v[5000010];
int N, K;
long long suma=0;
void push (int i, int x) {
while (!deck.empty() && v[deck.back()]>x)
deck.pop_back();
deck.push_back(i);
}
long long query(int i) {
while (!deck.empty() && deck.front()<=i-K)
deck.pop_front();
return v[deck.front()];
}
int main () {
freopen("deque.in","rt",stdin);
freopen("deque.out","wt",stdout);
scanf("%d %d\n", &N, &K);
for (int i=0; i<N; ++i) {
scanf("%d", &v[i]);
push(i,v[i]);
if (i>K-2) suma += query(i);
}
printf("%lld", suma);
return 0;
}