Cod sursa(job #282500)
| Utilizator | Data | 17 martie 2009 19:09:01 | |
|---|---|---|---|
| Problema | Deque | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.49 kb |
#include<stdio.h>
#define Nmax 5000010
int k,a[Nmax],n,c[Nmax],fr=1,ls=0;
long long s;
void citire()
{
freopen("deque.in","r",stdin);
int i;
scanf("%d%d",&n,&k);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
fclose(stdin);
}
int main()
{
int i;
citire();
for(i=1;i<=n;i++)
{ while(fr<=ls && a[i]<=a[c[ls]]) ls--;
ls++;
c[ls]=i;
if(c[fr]==i-k) fr++;
if(i>=k) s=s+a[c[fr]];
}
freopen("deque.out","w",stdout);
printf("%lld",s);
fclose(stdout);
return 0;
}