Cod sursa(job #300400)

Utilizator bacerandreiBacer Andrei bacerandrei Data 7 aprilie 2009 13:39:56
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include <stdio.h>
#define max 5000010

int n , i , a[max] , deque[max] , front , back , k;
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" , sum);
   fclose(stdin);
   fclose(stdout);
 return 0;
}