Cod sursa(job #584453)

Utilizator bugyBogdan Vlad bugy Data 25 aprilie 2011 16:14:33
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.55 kb
#include<stdio.h>
#define dim  5000005
using namespace std;

int A[dim],deque[dim],i,front,back,n,k;

long long sum;

int main()
{
	FILE *f=fopen("deque.in","r"), *g=fopen("deque.out","w");
	
fscanf(f,"%d %d",&n,&k);
for(i=1;i<=n;i++)
	fscanf(f,"%d\n",&A[i]);

front = 1; back = 0;

for(i=1;i<=n;i++)
{
	while(front <= back &&A[i]<=A[ deque[ back ] ])
		back--;
	
	deque[++back]=i;
	
	if(deque[front] == i-k )	
		front++;
	
	if(i>=k) 
		sum+= A[deque[front]];
}


fprintf(g,"%lld\n",sum);

fclose(f);
fclose(g);
return 0;
}