Cod sursa(job #1468598)

Utilizator glbglGeorgiana bgl glbgl Data 6 august 2015 14:38:58
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <stdio.h>
#include <fstream>
#include <vector>
#include <deque>

using namespace std;


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

int N, K;
long long sum = 0;
vector<int> A;
deque<int> mydeque;

void read(){

	in >> N >> K;
	A.resize(N+1);
	int x;
	for(int i = 1; i <= N; ++i){
		in >> x;
		A[i] = x;
	}
}

void Deque(){

	for(int i = 1; i <= N; ++i){
		deque<int>::reverse_iterator it = mydeque.rbegin();
		while(it != mydeque.rend()){
			if(A[i] < *it){
				mydeque.pop_back();
				*it++;
			}
			else break;
		}
		mydeque.insert(mydeque.end(), A[i]);
		if(i - K >= 1 && mydeque.front() == A[i-K]){
			mydeque.pop_front();
		}
		if(i >= K){
			sum += mydeque.front();
		}
	}
}

int main(){

	read();
	Deque();
	out << sum;
	return 0;
}