Cod sursa(job #236529)
Utilizator | Data | 27 decembrie 2008 20:41:36 | |
---|---|---|---|
Problema | Deque | Scor | 100 |
Compilator | c | Status | done |
Runda | Arhiva educationala | Marime | 0.7 kb |
#include <stdio.h>
#define Nmax 5000010
int D[Nmax],A[Nmax],i,j,u,p,N,K;
long long suma;
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]);
u=p=1;
for (i=1;i<=N;++i)
{
while (u<=p && A[i]<=A[D[p]])
p--;
p++;
D[p]=i;
while (D[u]==i-K)
u++;
if (i>=K)
//printf("%d\n", A[D[u]]);
suma+=A[D[u]];
}
printf("%lld", suma);
return 0;
}