Cod sursa(job #487320)

Utilizator elmercerAlex Mercer elmercer Data 24 septembrie 2010 18:28:24
Problema Deque Scor 25
Compilator cpp Status done
Runda Arhiva educationala Marime 0.57 kb
#include <stdio.h>
#include <math.h>

long n, k, st, dr, i, nr, a[5000010], t[5000010], sum, ok;

int main() {
	freopen("deque.in", "r", stdin);
	freopen("deque.out", "w", stdout);
	scanf("%ld %ld", &n, &k);
	st = 1;dr = 1;
	for (i = 1; i <= n; ++i) {
		ok = 0;
		scanf("%ld", &nr);
		
		if (i == 1) {
			a[1] = nr;
			t[1] = 1;
			if (i >= k) sum += a[st];
			continue;
		}
		
		if (i - t[st] >= k) ++st;
		
		while (a[dr] >= nr && dr >= st) --dr;
		
		a[++dr] = nr;
		t[dr] = i;
		
		if (i >= k) sum += a[st];
	}
	
	printf("%ld\n", sum);
	return 0;
}