Pagini recente » Cod sursa (job #1812336) | Cod sursa (job #2811205) | Cod sursa (job #729672) | Cod sursa (job #1199057) | Cod sursa (job #1504752)
#include<cstdio>
#include<deque>
using namespace std;
int n,k,v[5000001];
long long s=0;
deque <int> d,p;
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",&v[i]);
while(d.size()>0 and d.back()>v[i])
{
d.pop_back();
p.pop_back();
}
d.push_back(v[i]);
p.push_back(i);
}
s+=d.front();
for(int i=k+1;i<=n;i++)
{
scanf("%d",&v[i]);
if(p.front()<=i-k)
{
d.pop_front();
p.pop_front();
}
while(d.size()>0 and d.back()>v[i])
{
d.pop_back();
p.pop_back();
}
d.push_back(v[i]);
p.push_back(i);
s+=d.front();
}
printf("%lld",s);
return 0;
}