Cod sursa(job #1356459)

Utilizator alexb97Alexandru Buhai alexb97 Data 23 februarie 2015 14:03:47
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.57 kb
#include <fstream>
#include <deque>
#include <algorithm>
using namespace std;

#define INF 0x3f3f3f3f
#define MaxN 5000010

ifstream is("deque.in");
ofstream os("deque.out");

deque<int> Q;
int a[MaxN];
int n, k;
int x;
long long sumf;

int main()
{
	is >> n >> k;
	int pos = 1;
	for(int i = 1; i <= n; ++i)
	{
		is >> a[i];
		if(i > k) pos++;
		if(i > k && Q.front() < pos)
		{
			Q.pop_front();
		}
		while(!Q.empty() && a[Q.back()] > a[i])
			Q.pop_back();
		Q.push_back(i);
		if(i >= k)
		{
			sumf += a[Q.front()];
		}
	}
	os << sumf;
	
	is.close();
	os.close();
	return 0;
}