Cod sursa(job #274900)
| Utilizator | Data | 10 martie 2009 08:30:39 | |
|---|---|---|---|
| Problema | Deque | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.61 kb |
#include <stdio.h>
int x[5000002],v[5000002];
int n,k,i,first,last;
long long sum;
int main()
{
freopen("deque.in","r",stdin);
freopen("deque.out","w",stdout);
scanf("%d %d",&n,&k);
for (i=1;i<=n;++i)
scanf("%d",&x[i]);
first=1;
last=0;
sum=0;
for (i=1;i<=n;++i)
{
while ((x[i]<x[v[last]])&&(last>=first)) --last;
++last;
v[last]=i;
if (v[first]<=i-k) ++first;
if (i>=k) sum+=x[v[first]];
}
printf("%lld",sum);
fclose(stdin);
fclose(stdout);
return(0);
}
