Cod sursa(job #537143)

Utilizator maritimCristian Lambru maritim Data 20 februarie 2011 11:36:31
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include<stdio.h>
using namespace std;

long int n;
long int i;
long int Front;
long int Back;
long int k;
long int Deck[5000001];
long int A[5000001];
long long sum;

void citire(void)
{
	long int a;
	FILE *f = fopen("deque.in","r");
	
	fscanf(f,"%d %d",&n,&k);
	Front = 1; Back = 0;
	for(i=1;i<=n;i++)
	{
		fscanf(f,"%d",&A[i]);
		while(Front<=Back && A[i]<=A[Deck[Back]]) Back --;
		Deck[++Back] = i;
		if(Deck[Front] == i-k) Front ++;
		if(i>=k) sum += A[Deck[Front]];
	}
	
	fclose(f);
}

int main()
{
	FILE *f = fopen("deque.out","w");
	
	citire();
	fprintf(f,"%lld",sum);
	
	fclose(f);
	return 0;
}