Pagini recente » Cod sursa (job #2026288) | Cod sursa (job #2719985) | Cod sursa (job #326780) | Cod sursa (job #586588) | Cod sursa (job #1464570)
#include<cstdio>
#include<queue>
using namespace std;
struct numar{int val,poz;};
deque<numar> q;
numar aux;
int main(){
freopen("deque.in","r",stdin);
freopen("deque.out","w",stdout);
int n,k,i,x;
long long sum;
scanf("%d%d",&n,&k);
for(i=1;i<=k;i++){
scanf("%d",&x);
if(!q.empty())
while(!q.empty()&&q.back().val>=x)
q.pop_back();
aux.val=x;
aux.poz=i;
q.push_back(aux);
}
sum=q.front().val;
for(i=k+1;i<=n;i++){
scanf("%d",&x);
if(!q.empty())
while(!q.empty()&&q.back().val>=x)
q.pop_back();
aux.val=x;
aux.poz=i;
q.push_back(aux);
if(q.front().poz<i-k+1)
q.pop_front();
sum+=q.front().val;
}
printf("%lld",sum);
return 0;
}