Cod sursa(job #283358)
Utilizator | Data | 19 martie 2009 07:12:16 | |
---|---|---|---|
Problema | Deque | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.55 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;
}