Cod sursa(job #547403)
| Utilizator | Data | 6 martie 2011 12:21:50 | |
|---|---|---|---|
| Problema | Deque | Scor | 25 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.55 kb |
#include<stdio.h>
int deque[5000001], v[5000001], s;
int main(){
freopen ("deque.in", "r", stdin);
freopen ("deque.out", "w", stdout);
int n, i, k;
scanf("%d %d ", &n, &k);
for(i=1; i<=n; i++)
scanf("%d ", &v[i]);
int front=1, back=0;
for(i=1; i<=n; i++){
while(front<=back && v[i]<=v[deque[back]])
back--;
deque[++back]=i;
if(deque[front]==i-k)
front++;
if(i>=k)
s+=v[deque[front]];
}
printf("%d ", s);
return 0;
}
