Cod sursa(job #508599)

Utilizator toniobFMI - Barbalau Antonio toniob Data 8 decembrie 2010 22:45:37
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <fstream>
using namespace std;

ifstream in ("deque.in");
ofstream out ("deque.out");

const int N = 1 << 23;
int n, k, v[N], d[N], p = 1, u;
long long rez;

inline void stanga (int poz) {
	if (poz - d[p] == k) {
		++p;
	}
}

void dreapta (int poz) {
	for (; v[poz] <= v[d[u]] && u >= p; --u);
	d[++u] = poz;
}

void birth () {
	in >> n >> k;
	for (int i = 1; i <= n; in >> v[i++]);
}

void raise () {
	for (int i = 1; i <= k; ++i) {
		dreapta (i);
	}
	rez += v[d[p]];
	
	for (int i = k + 1; i <= n; ++i) {
		stanga (i);
		dreapta (i);
		rez += v[d[p]];
	}
}

void death () {
	out << rez << '\n';
}

int main () {
	birth ();
	raise ();
	death ();
	
	return 0;
}