Cod sursa(job #800396)

Utilizator MtkMarianHagrSnaf MtkMarian Data 21 octombrie 2012 15:33:26
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include<cstdio>
int n , k , *a , *dq, l=0 , lfront=1 ;
long long  sol = 0 ;

int main()
{
	freopen( "deque.in", "r",stdin );
	freopen( "deque.out" ,"w", stdout ); 

	scanf("%d %d" , &n, &k);

	a=new int [n+3];

	dq=new int [ n +3 ];

	for(int i = 1 ; i <= n ; ++i ) 
	{
		scanf("%d",&a[i]);
	}


	

	for(int i = 1 ; i <= n ; ++i)
	{
		
			
			
			while ( ( l>=lfront ) >= 1 && a[ dq [ l ] ] >=  a [ i] ) --l;
				
	
			dq[ ++l ]= i;

			while ( dq[ lfront ] <= i-k ) ++lfront ;

		
				if( i >= k  )sol  +=  a[dq[ lfront ] ] ;
				
	}

	

	printf ( "%lld\n" ,sol ) ;
	return 0 ;
}