Cod sursa(job #673026)

Utilizator luckyme91wiz kid luckyme91 Data 3 februarie 2012 18:38:03
Problema Deque Scor 60
Compilator c Status done
Runda Arhiva educationala Marime 0.55 kb
#include <stdio.h>
#include <stdlib.h>

int main () {

freopen ("deque.in", "r", stdin);
freopen ("deque.out", "w", stdout);

int n, k, enq, deq, i;

scanf ("%d %d", &n, &k);
int *v = (int*) malloc (n * sizeof(int));

for (i = 0; i < n; i++)
	scanf ("%d ", &v[i]);

int queue[n];
queue[0] = 0;
enq = 0;
deq = 0;
long long int s = 0;
for (i = 0; i < n; i++)
{
	if (i >= k)
		s += v[queue[enq]];
	if (queue[enq] == i - k)
	{
		enq++;
	}

	while (deq >= enq && v[queue[deq]] >= v[i])
		deq--;
	queue[++deq] = i;
}
s += v[queue[enq]];
printf ("%lld" , s);
return 0;
}