Cod sursa(job #235820)
| Utilizator | Data | 25 decembrie 2008 22:49:49 | |
|---|---|---|---|
| Problema | Deque | Scor | 20 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.53 kb |
#include<stdio.h>
#define MAXN 5010
int v[MAXN],d[MAXN],n,k,i,p,u;
long long rez;
int main(){
FILE *f=fopen("deque.in","r");
fscanf(f,"%d %d",&n,&k);
for(i=1;i<=n;i++){
fscanf(f,"%d",&v[i]);
}
fclose(f);
p=1;
u=1;
d[1]=1;
for(i=2;i<=n;i++){
while(d[p] <= i- k )
p++;
while(v[i] < v[d[u]] && p<=u)
u--;
u++;
d[u]=i;
if(i>=k){
rez+=(long long)v[d[p]];
}
}
FILE *g=fopen("deque.out","w");
fprintf(g,"%d",rez);
fclose(g);
return 0;
}
