Pagini recente » Cod sursa (job #3216397) | Cod sursa (job #2450258) | Cod sursa (job #2847512) | Cod sursa (job #2798919) | Cod sursa (job #1528432)
#include <bits/stdc++.h>
#define pb push_back
#define mp make_pair
using namespace std;
deque < pair<int, int> > d;
int main()
{
int n,k,x,i;
freopen("deque.in", "r", stdin);
freopen("deque.out", "w", stdout);
scanf("%d %d",&n,&k);
scanf("%d",&x);
d.pb(mp(x,1));
unsigned long long s = 0;
for(i = 2;i <= n;i++){
scanf("%d",&x);
while(d.front().second <= i-k && d.empty() == 0){
d.pop_front();
}
if(x <= d.front().first){
while(d.empty() == 0){
d.pop_front();
}
d.pb(mp(x,i));
}else{
while((d.back().second <= i-k || d.back().first > x) && !d.empty()){
d.pop_back();
}
d.pb(mp(x,i));
}
if(i >= k){
cerr<<d.front().first<<' ';
s += d.front().first;
}
}
printf("%lld",s);
return 0;
}