Cod sursa(job #770025)

Utilizator cbanu96Banu Cristian cbanu96 Data 21 iulie 2012 18:49:14
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <cstdio>
#include <deque>

#define FILEIN "deque.in"
#define FILEOUT "deque.out"
#define NMAX 5000010

using namespace std;

deque<int> minim;
int A[NMAX];
int main()
{
	int N, K, i, x;
	long long S = 0;
	FILE* fin = fopen(FILEIN, "r");
	FILE* fout = fopen(FILEOUT, "w");
	fscanf(fin, "%d %d", &N, &K);
	for ( i = 1; i <= N; i++)
	{
		fscanf(fin, "%d", &x);
		A[i] = x;
		if(!minim.empty())
		while(x <= A[minim.front()] && !minim.empty())
		{
			minim.pop_front();
		}
		minim.push_front(i);
		if(minim.back() == i-K)
			minim.pop_back();
		if(i >= K)
		{
			S += A[minim.back()];
		}
	}
	fclose(fin);
	fprintf(fout, "%lld\n", S);
	fclose(fout);
	
	
	
	
	
	return 0;
}