Cod sursa(job #250542)
| Utilizator | Data | 31 ianuarie 2009 10:18:44 | |
|---|---|---|---|
| Problema | Deque | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.52 kb |
#include <stdio.h>
#define DIM 5000001
int A[DIM];
int D[DIM];
int n,k,i,p,u;
long long s;
int main(){
FILE *f = fopen("deque.in","r");
fscanf(f,"%d %d",&n,&k);
for (i=1;i<=n;i++){
fscanf(f,"%d",&A[i]);
}
p=u=1;
D[u]=1;
for (i=2;i<=n;i++){
while (p<=u && A[i]<=A[D[u]])
u--;
D[++u] = i;
if (D[p]<i-k+1)
p++;
if (i>=k) {
s+=A[D[p]];
}
}
fclose(f);
FILE *g = fopen("deque.out","w");
fprintf(g,"%lld\n",s);
fclose(g);
return 0;
}