Cod sursa(job #2231631)

Utilizator valen.valentinValentin Valeanu valen.valentin Data 15 august 2018 12:11:47
Problema Deque Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <stdio.h>
#define nmax 5000010

using namespace std;

struct date {
	
	int value;
	int pos;
};

int n, k, front_pointer, rear_pointer;
int t[nmax];

date deq[nmax];

int main()
{
	scanf("%d %d", &n, &k);

	for (int i = 1; i <= n; i++) scanf("%d", &t[i]);

	front_pointer = rear_pointer = 1; deq[1].value = t[1]; deq[1].pos = 1;

	long long int answer = 0;

	for (int i = 2; i <= n; i++) {

		rear_pointer++; deq[rear_pointer] = { t[i], i };

		while (rear_pointer - 1 >= front_pointer && deq[rear_pointer].value < deq[rear_pointer - 1].value) {

			deq[rear_pointer - 1] = deq[rear_pointer]; rear_pointer--;
		}

		if (i >= k) answer += deq[front_pointer].value;

		if (i - deq[front_pointer].pos + 1 >= k) front_pointer++;
	}

	printf("%lld", answer);

	return 0;
}