Cod sursa(job #632995)

Utilizator JohannesJohannes Dragulanescu Johannes Data 12 noiembrie 2011 17:10:34
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <deque>
#include <fstream>
#include <stdio.h>
using namespace std;

int main ()
{
	ifstream fin("deque.in");
	ofstream fout("deque.out");
    
	deque <int> dque, position;
	int n,k; // lungimea sirului respectiv subsecventei

	int element;
    long long suma = 0; 

	fin>>n>>k;
        
    for(int i=1; i<=n; i++)
    {
        fin>>element;

		while (!dque.empty() && element <= dque.back()) 
		{
			dque.pop_back(); 
			position.pop_back();
		}

		dque.push_back(element);

		// Adaugam pozitia elementului curent in deque
		position.push_back(i);

		if (position.front() <= i-k)
		{
			dque.pop_front();
			position.pop_front();
		}
		 
		// Afisam minimul, acesta aflandu-se in varful deque-ului
		if (i >= k) suma = suma + dque.front();    
		
    }
    
	fout<<suma;

    return 0;
}