Cod sursa(job #236942)

Utilizator andumMorie Daniel Alexandru andum Data 28 decembrie 2008 19:34:24
Problema Deque Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <stdio.h>  
  
#define maxn 5000001  
  
long long N, K, A[maxn], Deque[maxn], Front, Back, i;  
long long Sum;  
  
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]);  
    Front = 1, Back = 0;
    for (i = 1; i <= N; i++)  
    {  
        while (Front <= Back && A[i] <= A[ Deque[Back] ]) 
		Back--;         
        Deque[++Back]=i;  
  	if (Deque[Front] == i-K) 
		Front++;  
  	if (i >= K) 
		Sum += A[Deque[Front]];      
    }  
  
    printf("%lld\n", Sum);  
    return 0;  
}