Cod sursa(job #1538867)

Utilizator kassay_akosKassay Akos kassay_akos Data 29 noiembrie 2015 22:12:27
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <iostream>
#include <fstream>
#include <string.h>
//#include <vector>
//#include <queue>
//#include <algorithm>

using namespace std;
const int nmax = 5000005;
int n, k, V[nmax], deq[nmax];

int main(){
	freopen("deque.in", "r", stdin);
	freopen("deque.out", "w", stdout);
	scanf("%d %d ", &n, &k);
	for (int i = 0; i < n; i++)
		scanf("%d", &V[i]);

	long long sum = 0;
	int front = 1, back = 0; // vertical queue || Back < Front => deq-ul este vid
	for (int i = 0; i < n; i++){
		while (front <= back && V[i] <= V[deq[back]]) 
			back--;
		deq[++back] = i;
		if (deq[front] == i - k) 
			front++;
		if (i >= k-1) 
			sum += V[deq[front]];
	}
	
	printf("%lld ", sum);
	fclose(stdin);
	fclose(stdout);
	return 0;
}