Cod sursa(job #2265499)

Utilizator Catalin_BorzaBorza Catalin-Mihai Catalin_Borza Data 21 octombrie 2018 12:04:48
Problema Deque Scor 25
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>
#include <deque>
#include <vector>
#define MAX 5000005
using namespace std;

ifstream f("deque.in");
ofstream g("deque.out");

int n, k, x;

int *a;

struct my_deque
{
	int *ind, st = 0, dr = 0;
	void init(const int k)
	{
		ind = new int[k];
	}
	void add(int pos)
	{
		while (dr - st > 0 && a[pos] <= a[ind[dr - 1]])
			--dr;
		ind[dr++] = pos;
	}
	int get(int pos)
	{
		while (pos - ind[st] >= k)
			st++;
		return ind[st];
	}
};

void cu_struct()
{
	int s = 0;
	my_deque d;
	d.init(k);
	a = new int[n];
	for (int i = 1; i < k; i ++)
	{
		f >> x;
		a[i] = x;
		d.add(i);
	}
	for (int i = k; i <= n; i++)
	{
		f >> x;
		a[i] = x;
		d.add(i);
		s += a[d.get(i)];
	}
	g << s;
}

int main()
{
	f >> n >> k;
	cu_struct();
	return 0;
}