Cod sursa(job #374758)

Utilizator veliki.velicuVelicu Stefan veliki.velicu Data 18 decembrie 2009 12:23:35
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.57 kb
#include<fstream>
using namespace std;
const int N = 1<<23;
int st=0, dr=-1, n, k, dq[N], v[N];
long long s;
ifstream in("deque.in");
ofstream out("deque.out");
inline void stanga(int i)
{
	if(i - dq[st] == k)
		++st;
}
inline void dreapta(int i)
{
	while(st <= dr && v[i] <= v[dq[dr]])
		--dr;
	dq[++dr] = i;
}
void citire()
{
	int i;
	in>>n;
	in>>k;
	for(i=0; i<n; i++)
		in>>v[i];
}
int main()
{
	int i;
	citire();
	for(i=0; i<k-1; i++)
		dreapta(i);
	for(; i<n; i++)
	{
		stanga(i);
		dreapta(i);
		s += v[dq[st]];
	}
	out<<s;
	return 0;
}