Cod sursa(job #472385)
| Utilizator | Data | 24 iulie 2010 13:56:36 | |
|---|---|---|---|
| Problema | Deque | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.42 kb |
#include <stdio.h>
FILE*f=fopen("deque.in","r");
FILE*g=fopen("deque.out","w");
int n,k,v[5000001],i,p,u,d[5000001];
long long s;
int main() {
fscanf(f,"%d%d",&n,&k);
p=1;
for(i=1;i<=n;i++)
fscanf(f,"%d",&v[i]);
for(i=1;i<=n;i++){
while(p<=u && v[i]<=v[d[u]])
u--;
d[++u]=i;
if(d[p]==i-k)
p++;
if(i>=k)
s+=v[d[p]];
}
fprintf(g,"%lld",s);
fclose(g);
fclose(f);
return 0;
}
