Cod sursa(job #508995)

Utilizator florin_ddumitriu florin florin_d Data 10 decembrie 2010 00:49:44
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include <iostream>
#include <fstream>
#include <deque>

int n;
int sir[5000000];
using namespace std;
int main() {
	int n, k;
	long long suma  = 0;

	deque<int> a;
	ifstream fin("deque.in");
	ofstream fout("deque.out");
	fin>>n>>k;
	for(int i = 1; i <= n; i++) {
		fin>>sir[i];
	}

	for(int i = 1; i < k; i++) {
		while( a.empty() == 0 && sir[i] <= sir[a.front()])
			a.pop_front();
		a.push_front( i ); 
	}

	for( int i = k; i <= n; i++) {
		while( a.empty() == 0 && sir[i] <= sir[a.front()])
			a.pop_front();
		a.push_front( i ); 

		while( a.back() <= i - k) a.pop_back();
		suma += sir[a.back()];

	}


	fout<<suma;
	return 0;
}