Cod sursa(job #775032)

Utilizator oldcatanca popescu oldcat Data 7 august 2012 10:19:02
Problema Schi Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb

#include<fstream>
using namespace std;
FILE *f1=fopen("schi.in","r");
FILE *f2=fopen("schi.out","w");


/*int main() 
{ 
    
	int i,k=0,n,m,ok,start; 
	char c; 
	fscanf(f1,"%d%d", &n,&m); 
	fscanf(f1,"%c", &v[0]); */
typedef struct nod_ABC *ptr_ABC;

struct nod_ABC
{
	int cheie;
	int pozitie;
	ptr_ABC st;
	ptr_ABC dr;
	
};
ptr_ABC radacina;
	int n,i,x;
	ifstream fin ("schi.in");
	ofstream fout("schi.out");

ptr_ABC inserare ( ptr_ABC p, int x, int nr)
{
	
	int poz=nr;
	if(!p) 
	{
		p= new nod_ABC;
		p->cheie=x;
		p->pozitie=1;
		p->st=p->dr=NULL;
	}
	else 
		if(poz  <= p->pozitie) 
		{
			(p->pozitie)++;
			p ->st =inserare(p->st,x,poz);
		}
		else 
			if (poz > p->pozitie)
			{
				poz=poz-p->pozitie;
				p->dr=inserare(p->dr,x,poz);
			}
	return p;
}
void parcurgere_inordine( ptr_ABC p)
{
	if(p)
	{
		parcurgere_inordine(p->st);
		fprintf(f2,"%d\n", p->cheie); 
		//fout<<p->cheie<<"\n";
		parcurgere_inordine(p->dr);
	}

}
	
int main()
{
	fscanf(f1,"%d", &n); 
	//fin>>n;
	//cout<<n;
	for(i=1;i<=n;i++)
	{
		fscanf(f1,"%d", &x); 
		//fin>>x;
		radacina=inserare(radacina,i,x);
	}
	parcurgere_inordine(radacina);
	return 0;
}