Cod sursa(job #544043)

Utilizator Rares95Rares Arnautu Rares95 Data 28 februarie 2011 22:23:00
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
# include <stdio.h>
  using namespace std;
	  int a[5000001], deque[5000001];
		
		int main () {
			int n, k, i, front = 1, back = 0;
			long long sum = 0;
			
			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]);
			
			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;
		}