Cod sursa(job #374539)

Utilizator adrian_manducadrian manduc adrian_manduc Data 17 decembrie 2009 13:24:53
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.51 kb
#include<iostream>
#include<fstream>
using namespace std;
ifstream f("deque.in");
ofstream g("deque.out");
int dq[50000001];
int v[50000001];
int n,k,i,st,dr;
long long s=0;
inline void stanga(int i)
{
	if(dq[st]==i-k)
		++st;
}
void dreapta(int i)
{
	while (st<=dr&&v[i] <= v[dq[dr]] )
		--dr;
	dq[++dr]=i;
}
int main()
{	
	f>>n>>k;
	st=1; dr=0;
	for(i=1; i<=n; i++)
		f>>v[i];
	for(i=1; i<=n; i++)
	{
		stanga(i);
		dreapta(i);
		if(i>=k)
			s=s+v[dq[st]];
	}
	g<<s;
	return 0;
}