Cod sursa(job #811142)

Utilizator krissu93FMI Tiugan Cristiana Elena krissu93 Data 11 noiembrie 2012 16:17:27
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;

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

long n,k;
vector <long> deq;
vector <long> p;

long long deque()
{	long long s=0;;
	long stanga=0;
	long dreapta=-1;
	long a,i;
	for( i=1;i<k;i++)
	{
		in>>a;
		while ( (dreapta>=stanga) && ( a<deq[dreapta] ))
		{
			dreapta--;
		}
		dreapta++;
		if (dreapta== deq.size())
		{
			deq.push_back(a);
			p.push_back(i);
		}
		else
		{
			deq[dreapta]=a;
			p[dreapta]=i;
		}
	}
	for (i=k;i<=n;i++)
	{
		in>>a;
		while ( (dreapta>=stanga) && a<deq[dreapta])
		{	dreapta--;
		}
		dreapta++;
		if (dreapta==deq.size())
		{
			deq.push_back(a);
			p.push_back(i);
		}
		else
		{
			deq[dreapta]=a;
			p[dreapta]=i;
		}
		if (i-p[stanga]+1>k) 
		{ 		
			stanga++;
		}
		s+=deq[stanga];
	}
	return s;
}
int main()
{
	in>>n>>k;
	out<<deque();
	return 0;
}