Cod sursa(job #930286)

Utilizator tsubyRazvan Idomir tsuby Data 27 martie 2013 15:59:54
Problema Deque Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include <cstdio>
#define N 5000010

int a[N], Deque[N], n, k;
long long sum;

void prelucrare()
{
    int Front = 1, Back = 0;
	for (int 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);
}

void citire()
{
    scanf("%d %d ", &n, &k);
	for (int i = 1; i <= n; i++)
		scanf("%d ", &a[i]);
}

int main()
{
    freopen("deque.in", "r", stdin);
    freopen("deque.out", "w", stdout);
    citire();
    prelucrare();

    return 0;
}