Cod sursa(job #580587)

Utilizator shnakoVlad Schnakovszki shnako Data 13 aprilie 2011 11:38:20
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <cstdio>
#include <deque>
#define LIM 5000005
using namespace std;
FILE *f=fopen("deque.in", "r"), *g=fopen("deque.out", "w");
long long n, k, i, s[LIM], suma;

deque <int> v;

inline void deckit(long long kzk)
{
	while(!v.empty()&&s[v.back()]>=s[kzk])
			v.pop_back();
	v.push_back(kzk);
}

inline void citeste()
{
	fscanf(f, "%lld%lld", &n, &k);
	for (i=1;i<=n;i++)
		fscanf(f, "%lld", &s[i]);
}

inline void decuieste()
{
	for (i=1;i<=k;i++)
		deckit(i);
	for (i=k;i<=n;i++)
	{
		if (v.front()<=i-k)
			v.pop_front();
		deckit(i);
		suma+=s[v.front()];
	}
}
	
int main()
{
	citeste();
	decuieste();
	fprintf(g, "%lld", suma);
	fclose(f);
	fclose(g);
	return 0;
}