Cod sursa(job #240544)
Utilizator | Data | 7 ianuarie 2009 21:44:37 | |
---|---|---|---|
Problema | Deque | Scor | 25 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.38 kb |
#include <stdio.h>
int A[5000001],q[5000001],p,u;
int main()
{
FILE *in = fopen("deque.in","r");
FILE *out = fopen("deque.out","w");
int i,n,m,s=0;
fscanf(in,"%d%d",&n,&m);
for (i=1;i<=n;i++) fscanf(in,"%d",&A[i]);
p=1;
u=0;
for (i=1;i<=n;i++)
{
while (p<=u && A[i]<=A[q[u]]) u--;
q[++u] = i;
if (i-m==q[p]) p++;
if (i>=m) s+=A[q[p]];
}
fprintf(out,"%d",s);
}