Cod sursa(job #470627)

Utilizator blasterzMircea Dima blasterz Data 14 iulie 2010 21:45:55
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.22 kb
/*
 *	Algsort
 *	BST = Binary Search Tree
 *	@author: Mircea Dima
*/

#include <cstdio>
#define dim 8192
char ax[dim];
int pz;

inline void cit (int &x)
{
	x = 0;
	while (ax[pz] < '0' || ax[pz] > '9')
		if (++pz == dim)
			fread (ax, 1, dim, stdin), pz = 0;
		
	while (ax[pz] >= '0' && ax[pz] <= '9')
	{
		x = x * 10 + ax[pz] - '0';
		if (++pz == dim)
			fread (ax, 1, dim, stdin), pz = 0;
	}
	
}


struct nod
{
	int key;
	nod *left, *right;
};

typedef nod* tree;

tree R, nil;

void init ()
{
	nil = new nod;
	nil->left = nil->right = 0;
	nil->key = 0;
	R = nil;
}

inline void insert (tree &n, int v)
{
	if (n == nil)
	{
		n = new nod;
		n->left = n->right = nil;
		n->key = v;
		return;
	}
	
	if (v < n->key) 
		insert (n->left, v);
	else
		insert (n->right, v);
}

inline void ino (tree n)
{
	if (n == nil) return;
	ino (n->left);
	printf ("%d ", n->key);
	ino (n->right);
}

int main ()
{
	freopen ("algsort.in", "r", stdin);
	freopen ("algsort.out", "w", stdout);
	
	init ();
	int n;
	cit (n);
	//scanf ("%d", &n);
	int v;
	for (int i = 1; i <= n; ++i)
	{
	//	scanf ("%d", &v);
		cit (v);
		insert (R, v);
	}
	
	ino (R);
	
	printf ("\n");
	return 0;
}