Cod sursa(job #487323)

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

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

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 += 1LL * 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 += 1LL * a[st];
	}
	
	printf("%lld\n", sum);
	return 0;
}