Cod sursa(job #243177)
| Utilizator | Data | 12 ianuarie 2009 11:17:32 | |
|---|---|---|---|
| Problema | Deque | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.49 kb |
#include <stdio.h>
struct deque {long v;long p;};
long n,i,k,st,dr,x;
long long sol;
deque d[5000005];
int main()
{
freopen ("deque.in","r",stdin);
freopen ("deque.out","w",stdout);
scanf("%ld %ld",&n,&k);
st=1;dr=0;
for (i=1;i<=n;++i){
scanf("%ld",&x);
while (x<d[dr].v&&dr>=st)dr--;
d[++dr].v=x;
d[dr].p=i;
while (i-d[st].p+1>k)st++;
if(i>=k)sol+=d[st].v;
}
printf("%lld",sol);
return 0;
}
