Cod sursa(job #529398)

Utilizator tudorsTudor Siminic tudors Data 4 februarie 2011 21:38:46
Problema Deque Scor 25
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include <stdio.h>
#include <deque>
#define ma 5000002
using namespace std;
int A[ma];
int i,n,k;
long long s;

void citire()
{
	FILE * f;
	f=fopen("deque.in","r");
	fscanf(f,"%d %d",&n,&k);
	for (i=1;i<=n;i++)
		fscanf(f,"%d",&A[i]);
	fclose(f);
}

void afisare()
{
	FILE *g;
	g=fopen("deque.out","w");
	fprintf(g,"%d",s);
	fclose(g);
}

void rezolv()
{
	deque <int> D;
	for (i=1;i<=n;i++)
	{
		while (!D.empty() && A[i]<=A[D.back()])
			D.pop_back();
		D.push_back(i);
		if (D.front()==i-k)
			D.pop_front();
		if (i>=k)
			s+=A[D.front()];
	}
}

int main()
{
	citire();
	rezolv();
	afisare();
	return 0;
}