Cod sursa(job #1059649)

Utilizator thereauFMI Sandu Robert Stelian thereau Data 16 decembrie 2013 20:59:07
Problema Deque Scor 5
Compilator cpp Status done
Runda Arhiva educationala Marime 2.24 kb
//#include "stdafx.h"
#include <vector>
#include <fstream>
using namespace std;
struct arbore{
	int element;
	arbore *stanga;
	arbore *dreapta;
};
void init(arbore *radacina, int x)
{
	radacina->element = x;
	radacina->stanga = NULL;
	radacina->dreapta = NULL;
}
void adaugare(arbore *radacina, int x)
{
	arbore *adaug = new arbore;
	adaug->stanga = NULL;
	adaug->dreapta = NULL;
	adaug->element = x;
	arbore *parcurgere = new arbore;
	parcurgere = radacina;
	if (x < parcurgere->element)//daca e mai mic decat radacina
	{
		int status = 1;
		while (status == 1)
		{
			if (x>parcurgere->element)
			{
				if (parcurgere->dreapta == NULL)
				{
					status = 0;
					parcurgere->dreapta = adaug;
				}
				else parcurgere = parcurgere->dreapta;
			}
			if (x < parcurgere->element)
			{
				if (parcurgere->stanga == NULL)
				{
					status = 0;
					parcurgere->stanga = adaug;
				}
				else parcurgere = parcurgere->stanga;
			}
		}
	}
	else//daca e mai mare decat radacina
	{
		int status = 1;
		while (status == 1)
		{

			if (x>parcurgere->element)
			{
				if (parcurgere->dreapta == NULL)
				{
					status = 0;
					parcurgere->dreapta = adaug;
				}
				else parcurgere = parcurgere->dreapta;
			}
			if (x < parcurgere->element)
			{
				if (parcurgere->stanga == NULL)
				{
					status = 0;
					parcurgere->stanga = adaug;
				}
				else parcurgere = parcurgere->stanga;
			}
		}
	}
}
int element(int i,int j,vector<int>v)
{
	arbore *radacina = new arbore;
	init(radacina, v.at(i));
	for (int k = i + 1; k < j; k++)adaugare(radacina, v.at(k));
	arbore *parcurgere = new arbore;
	parcurgere = radacina;
	while (parcurgere->stanga != NULL)parcurgere = parcurgere->stanga;
	return parcurgere->element;
	delete(radacina);
	delete(parcurgere);
}
int main()
{
	int n, k;
	long long suma;
	suma = 0;
	vector<int>vec;
	ifstream citire;
	ofstream scriere;
	citire.open("deque.in");
	citire >> n >> k;
	vec.resize(n);
	//citire vector
	for (int i = 0; i < n; i++)citire >> vec.at(i);
	//inchidere citire
	citire.close();
	for (int i = 0; i <= n - k; i++)suma += element(i, k + i, vec);
	scriere.open("deque.out");
	scriere << suma;
	scriere.close();
	//system("PAUSE");
	return 0;
}