Cod sursa(job #811698)

Utilizator bogdan93Grigorescu Bogdan bogdan93 Data 12 noiembrie 2012 20:39:12
Problema Deque Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include <cstdio>
#include <cstdlib>




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()
{
	freopen("deque.in", "r", stdin);
	freopen("deque.out", "w", stdout);
    
    int *v,*deque;
	int n,K,i,s=0;
    int min,max,val;
    
    
    v = (int *)calloc(n+1,sizeof(int ));
    deque = (int *)calloc(n+1,sizeof(int ));
    
	scanf("%d %d ", &n, &K);



	for (i = 1; i <= n; i++) 
		scanf("%d ", &v[i]);
   // for (i = 1; i <= n; i++) 
//		printf("%d ", v[i]);
//	printf("\n");
	min = 1;
    max = 0; 

	for ( 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++;

	    //afisare(deque,min,max);
		if ( i >= K ) s += v[deque[min]]; 
        //printf(".%d.",s);	
	}

	printf("\n%d", s);
    system("pause");
	return 0;
}