Pagini recente » Cod sursa (job #3163300) | Cod sursa (job #450455) | Cod sursa (job #2939913) | Cod sursa (job #288982)
Cod sursa(job #288982)
#include<stdio.h>
long long int sum,n,k,v[5000001],capat=1,coada,p,deque[5000001][2];
void insert(int val,int poz)
{
while(capat<=coada && val<deque[coada][0])coada--;
coada++; deque[coada][0]=val; deque[coada][1]=poz;
}
int query()
{
while(capat<=coada && deque[capat][1]<p)capat++;
return deque[capat][0];
}
int main(void)
{
freopen("deque.in","r",stdin);
freopen("deque.out","w",stdout);
int i;
capat=1;
scanf("%lld %lld",&n,&k);
for(i=1; i<=n; i++)scanf("%lld\n",&v[i]);
for(i=1; i<k; i++)insert(v[i],i);
for(i=k,p=1; i<=n; i++,p++)
{insert(v[i],i);
sum+=query();
}
printf("%lld",sum);
return 0;
}