Cod sursa(job #411775)

Utilizator Cosmin1490Balan Radu Cosmin Cosmin1490 Data 5 martie 2010 10:01:07
Problema Deque Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <stdio.h>
#include <deque>
#define NMAX 500010
using namespace std;

deque<int> Q;
int A[NMAX],N,K;
long long S;

void citire()
{
	FILE *fin=fopen("deque.in","r");
	
	int i;
	
	fscanf(fin,"%d %d",&N,&K);
	
	for(i =1;i<=N;i++)
		fscanf(fin,"%d",&A[i]);
	
	fclose(fin);
}

void de()
{
	int i;
	
	for(i=1;i<=N;i++)
	{
		while(!Q.empty() && A[Q.back()]>=A[i])
			Q.pop_back();
		
		Q.push_back(i);
		
		if(Q.front()<=(i-K) && !Q.empty()) 
			Q.pop_front();
		
		if(i>=K) S=S+A[Q.front()];
		
		
	}
	
	
	
	
}

void afisare()
{
	FILE *fout=fopen("deque.out","w");
	
	fprintf(fout,"%lld",S);
	
	fclose(fout);
}

int main()
{
	citire();
	de();
	afisare();
}