Cod sursa(job #812202)

Utilizator bogdan93Grigorescu Bogdan bogdan93 Data 13 noiembrie 2012 17:04:58
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <cstdio>
#include <cstdlib>

int v[5000001],deque[5000000];
int n,K;
int min,max,val;
long long s = 0;


void afisare(int *deque,int min,int max)
{
     printf("\n");
     for ( int i = min; i <= max; i++ )
         printf("%2d ",deque[i]);
     printf("\n");
} 


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


	min = 1;
    max = 0; 

	for ( int i = 1; i <= n; i++ )
	{
	
	    val = v[i];
		while ( val <= v[deque[max]] && min <= max ) max--;		
		
		deque[++max] = i;

		if ( deque[min] == i-K ) min++;

	    
		if ( i >= K ) s += v[deque[min]]; 
        	
	}

	fprintf(g,"%lld",s);
 
	return 0;
}