Cod sursa(job #625918)

Utilizator ml.vladareanVladarean Maria ml.vladarean Data 25 octombrie 2011 20:55:28
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <stdio.h>
int N,K,A[5000000],Deque[5000000],start=1,end=0;
long long suma;

void deque()
{
	
for(int i=1;i<=N;i++)
{
	while(start<=end && A[i]<=A[Deque[end]])
		end--;

	Deque[++end]=i;
	if(Deque[end]-Deque[start]==K)
		start++;

	if(i>=K)
		suma+=A[Deque[start]];

	
}

}

int main()
{

freopen("deque.in","r",stdin);
freopen("deque.out","w",stdout);
scanf("%d",&N);
scanf("%d",&K);
for(int i=1;i<=N;i++)
	scanf("%d",&A[i]);
	

//for(int i=1;i<=N;i++)
//	{
//	fscanf("%d",&A[i]);
//	while(start<=end && A[i]<=A[Deque[end]])
//		end--;
//
//	Deque[++end]=i;
//	if(Deque[end]-Deque[start]==K)
//		start++;
//
//	if(i>=K)
//		suma+=A[Deque[start]];
//
//	
//}
deque();
printf("%lld",suma);
fclose(stdin);
fclose(stdout);
return 0;
}