Cod sursa(job #556109)

Utilizator andra23Laura Draghici andra23 Data 15 martie 2011 22:29:43
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <fstream>
#include <deque>

using namespace std;

const int maxn = 5000010;
int n; 
int a[maxn];
deque <int> c;

int main() {
	ifstream f("deque.in");
	ofstream g("deque.out");
	int i, j, k;
	
	f >> n >> k;
	for (i = 1; i <= n; i++)
		f >> a[i];
	
	c.push_back(1);
	for (i = 2; i <= k; i++) {
		while (!c.empty() && a[c.back()] >= a[i])
			c.pop_back(); 
		c.push_back(i);
	}
	
	long long s = a[c.front()];
	
	for (i = k+1; i <= n; i++) {
		if (c.front() + k <= i)
			c.pop_front();
		while (!c.empty() && a[c.back()] >= a[i])
			c.pop_back(); 
		c.push_back(i);
		s += a[c.front()];
	}
	
	g << s << '\n';	
	return 0;	
}