Cod sursa(job #542046)
Utilizator | Terente Marina marinaaa | Data | 25 februarie 2011 18:41:19 |
---|---|---|---|
Problema | Deque | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.45 kb |
#include<stdio.h>
int A[5000001], i, head, tail, k, n, a,deque[5000001];
long long s;
int main(){
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]);
head=1 ; tail=0;
for(i=1;i<=n;i++){
while(head<=tail && A[i]<=A[deque[tail]])
tail--;
deque[++tail ]=i;
if (deque[head]==i-k)head++;
if (i>=k) s+=A[deque[head]];
}
printf ("%lld\n",s);
return 0;
}