Cod sursa(job #784096)

Utilizator PatrikStepan Patrik Patrik Data 4 septembrie 2012 22:12:18
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.55 kb
	#include<stdio.h>
	#define MAX 5000001
	using namespace std;
	int A[MAX] , D[MAX]  , N , front , back ,K;
	long long s;
	
	int main()
	{
		freopen("deque.in" , "r" , stdin );
		freopen("deque.out" , "w" , stdout );
		
		scanf("%d%d" , &N , &K );
		for( int i = 1 ; i <= N ; ++i )
			scanf("%d" , &A[i] );
		front = 1 , back = 0;
		for( int i = 1 ; i<= N ; ++i )
		{
			while(front <= back && A[i] <= A[D[back]])back--;
			D[++back] = i;
			if(D[front] == i-K)
				front++;
			if( i >= K )
				s+=A[D[front]];
		}
		
		printf("%lld" , s );
	}