Cod sursa(job #369259)
Utilizator | Nanuti Diana-Maria dya_ndm | Data | 27 noiembrie 2009 17:43:01 |
---|---|---|---|
Problema | Deque | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.42 kb |
#include<stdio.h>
long n,k,x[5000005],c[5000005];
long long s;
void read()
{
long i;
scanf("%ld %ld",&n,&k);
for(i=1;i<=n;++i)
scanf("%ld",&x[i]);
}
int main()
{
freopen("deque.in","r",stdin);
freopen("deque.out","w",stdout);
long p,i,u;
read();
p=1;
u=0;
for(i=1;i<=n;++i)
{
for(;p<=u && x[i]<x[c[u]];--u);
c[++u]=i;
if(c[p]<=i-k)
++p;
if(i>=k)
s+=x[c[p]];
}
printf("%lld\n",s);
return 0;
}