Pagini recente » Cod sursa (job #632549) | Cod sursa (job #1492451) | Cod sursa (job #879224) | Cod sursa (job #797716) | Cod sursa (job #1835393)
#include <iostream>
#include <deque>
using namespace std;
int n, k;
deque<int> d;
int A[5000000];
int64_t suma = 0;
void adauga(int x){
while(!d.empty() && d.back() > x)
d.pop_back();
d.push_back(x);
}
int main(){
freopen("deque.in", "r", stdin);
freopen("deque.out", "w", stdout);
scanf("%d %d", &n, &k);
for(int i=0; i<n; i++)
scanf("%d", &A[i]);
for(int i=0; i<k-1; i++)
adauga(A[i]);
for(int i=k-1; i<n; i++){
adauga(A[i]);
if(d.front() == A[i-k])
d.pop_front();
suma += d.front();
}
printf("%ld", suma);
return 0;
}