Mai intai trebuie sa te autentifici.
Cod sursa(job #385187)
Utilizator | Data | 22 ianuarie 2010 10:56:32 | |
---|---|---|---|
Problema | Deque | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.57 kb |
//
#include<stdio.h>
FILE *f=fopen("deque.in","r"), *g=fopen("deque.out","w");
long v[5000001],n,k,best,i,j,start,finish,c[5000001];
long long s;
int main()
{
int i;
fscanf(f,"%ld %ld", &n, &k);
for(i=1;i<=n;i++)
fscanf(f,"%ld", &v[i]);
start=1;
finish=0;
for(i=1;i<=n;i++)
{
while(v[i] <= v[c[finish]]&& start <= finish)
finish--;
c[++finish]=i;
if(c[start]==i-k)
start++;
if(i>=k)
s=s+v[c[start]];
}
fprintf(g,"%lld",s);
fclose(f);
fclose(g);
return 0;
}