Cod sursa(job #819500)
Utilizator | Data | 19 noiembrie 2012 10:26:01 | |
---|---|---|---|
Problema | Deque | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.44 kb |
#include <cstdio>
using namespace std;
long p,u,a[5000000],deq[5000000],i,n,k;
long long sum;
int main()
{FILE *f1 = fopen("deque.in","r");
FILE *f2 = fopen("deque.out","w");
fscanf(f1,"%ld%ld",&n,&k);
for (i=1;i<=n;i++) fscanf(f1,"%ld",&a[i]);
p=1;u=0;sum=0;
for (i=1;i<=n;i++)
{while (p<=u && a[i]<=a[deq[u]]) u--;
deq[++u]=i;
if (deq[p]==i-k) p++;
if (i>=k) sum+=a[deq[p]];
}
fprintf(f2,"%lld",sum);
return 0;
}