Pagini recente » Cod sursa (job #441123) | Cod sursa (job #1382223) | Cod sursa (job #2556384) | Cod sursa (job #670639) | Cod sursa (job #1323485)
#include <stdio.h>
#include <deque>
std::deque<int> pos,val;
int n,k;
int nr;
int main()
{
freopen ("deque.in","r",stdin);
freopen ("deque.out","w",stdout);
scanf("%d%d",&n,&k);
for(int i=1;i<=k;i++)
{
scanf("%d",&nr);
while(!val.empty()&&val.back()>=nr)
{
val.pop_back();
pos.pop_back();
}
val.push_back(nr);
pos.push_back(i);
}
long long int sum=val.front();
for(int i=k+1;i<=n;i++)
{
if(pos.front()==i-k)
{
val.pop_front();
pos.pop_front();
}
scanf("%d",&nr);
while(!val.empty()&&val.back()>nr)
{
val.pop_back();
pos.pop_back();
}
val.push_back(nr);
pos.push_back(i);
sum+=val.front();
}
printf("%lld\n",sum);
}