Cod sursa(job #508099)

Utilizator deneoAdrian Craciun deneo Data 7 decembrie 2010 15:58:41
Problema Deque Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include<fstream>
#include<deque>
using namespace std;

struct pai
{
	int val;
	int poz;
};

deque<pai> d;



void insertdeque(pai v)
{
	int i;
	for(i=d.size()-1; i>=0; --i)
		if(d[i].val > v.val)
			d.pop_back();
	d.push_back(v);
}

int getmin(int p)
{
	int i;
	for(i=0; i<=d.size()-1; ++i)
		if(d[i].poz < p)
			d.pop_front();
	return d[0].val;
}

int main()
{
	pai p;
	int n, k, i, v[5000001];
	long long sum=0;
	ifstream f("deque.in");
	ofstream g("deque.out");
	f>>n>>k;
	for(i=1; i<=n; ++i)
		f>>v[i];
	
	for(i=1; i<=k-1; ++i)
	{
		p.poz = i;
		p.val = v[i];
		insertdeque(p);
	}
	
	for(i=k; i<=n; ++i)
	{
		p.poz = i;
		p.val = v[i];
		insertdeque(p);
		sum+=getmin(i-k+1);
	}
	
	g<<sum<<'\n';
	g.close();
	return 0;
}