Cod sursa(job #253188)
Utilizator | Oprescu Radu Constantin runnaway90 | Data | 5 februarie 2009 15:33:45 |
---|---|---|---|
Problema | Deque | Scor | 15 |
Compilator | c | Status | done |
Runda | Arhiva educationala | Marime | 0.52 kb |
#include<stdio.h>
#define N 5000002
int a[N],dq[N];
long long sol;
int main(){
int n, k, s, d, i;
freopen("deque.in","r",stdin);
freopen("deque.out","w",stdout);
scanf("%d %d", &n, &k);
for (i=1;i<=n;i++) scanf("%d ",&a[i]);
s = 1;d = k-1;dq[1]=1;
for (i = 1; i <= n; i++){
if (dq[s] <= i-k && s <= d) s++;
for ( ;a[dq[d]] >= a[i] && s <= d; d--);
dq[++d] = i;
if (i>=k) sol+= a[dq[s]];
}
printf("%lld\n",sol);
return 0;
}