Cod sursa(job #282879)
Utilizator | Data | 18 martie 2009 14:44:14 | |
---|---|---|---|
Problema | Deque | Scor | 60 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.52 kb |
#include<stdio.h>
#define dim 5000001
int a[dim],c[dim];
long long suma;
int n,k,prim,ultim,i;
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", &a[i]);
prim=ultim=1;
c[prim]=1;
i=2;
while(i<=n)
{
if(i==(c[prim]+k))
prim++;
while( (a[i]<a[c[ultim]]) && (prim<=ultim) )
ultim--;
ultim++;
c[ultim]=i;
if(i>=k)
{
suma+=a[c[prim]];
}
i++;
}
printf("%lld \n", suma);
return 0;
}