Cod sursa(job #770177)

Utilizator Mihai22eMihai Ionut Enache Mihai22e Data 22 iulie 2012 13:09:06
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include<stdio.h>
#include<deque>

using namespace std;

#define MAXN 5000002

deque <int> D;

int v[ MAXN ], n, k;
long long int s;

void read()
{
	FILE *f = fopen("deque.in", "r");
	
	fscanf(f, "%d %d", &n, &k);
	for(int i = 1; i <= n; i++)
		fscanf(f, "%d", &v[i]);
	
	fclose(f);
}

void solve()
{
	for(int i = 1; i <= n; i++)
	{
		if(!D.empty())
		while( v[i] <= v[ D.front() ] && !D.empty() )
			D.pop_front();
		D.push_front(i);
		
		if(D.back() == i - k)
			D.pop_back();
		
		if(i >= k)
			s += v[ D.back() ];
	}
}

void write()
{
	FILE *g = fopen("deque.out", "w");
	
	fprintf(g, "%lld\n", s);
	
	fclose(g);
}

int main()
{
	read();
	solve();
	write();
	return 0;
}