Cod sursa(job #633267)

Utilizator alex_mircescuAlex Mircescu alex_mircescu Data 13 noiembrie 2011 13:58:30
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include <stdio.h>
#include <math.h>

long n, k, co, i, deq[5000001], deq2[5000001], j, q;
long long sum = 0;

int main() {
	freopen("deque.in", "r", stdin);
	freopen("deque.out", "w", stdout);
	scanf("%ld %ld", &n, &k);
	co = 1;
	scanf("%ld", &deq[1]);
	deq2[1] = 1;
	j = 1;
	for (i = 2; i <= n; ++i) {
		scanf("%ld", &q);
		while (deq[co] > q && co >= 1 && deq2[co] >= i - k + 1) {
			deq[co] = 0;
			--co;
		}
		deq[++co] = q;
		deq2[co] = i;
		
		if (i >= k) {
			for (; j <= co; ++j) {
				if (deq2[j] >= i - k + 1) {
					sum += deq[j];
					break;
				}
			}
		}
	}
	printf("%lld\n", sum);
	return 0;
}