Cod sursa(job #595039)

Utilizator maritimCristian Lambru maritim Data 10 iunie 2011 22:10:52
Problema Schi Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<stdio.h>
#include<malloc.h>

#define MaxN 30100

typedef struct _arb
{
	int info;
	int nr;
	struct _arb *s;
	struct _arb *d;
} arb;

int N;
int a;
FILE *g = fopen("schi.out","w");

void add(arb*& p,int a,int c,int d)
{
	if(!p)
	{
		p = (arb*)malloc(sizeof(arb));
		p->info = a;
		p->nr = 1;
		p->s = NULL;
		p->d = NULL;
	}
	else if(d+p->nr>=c)
	{
		add(p->s,a,c,d);
		p->nr ++;
	}
	else
		add(p->d,a,c,d+p->nr);
}

void SRD(arb*& p,int a)
{
	if(p)
	{
		SRD(p->s,a);
		fprintf(g,"%d\n",p->info);
		//A[p->info] = p->nr+a;
		SRD(p->d,a+p->nr);
	}
}

int main()
{
	FILE *f = fopen("schi.in","r");
	
	fscanf(f,"%d ",&N);
	arb *cap = NULL;
	for(int i=1;i<=N;i++)
	{
		fscanf(f,"%d ",&a);
		add(cap,i,a,0);
	}
	SRD(cap,0);
//	for(int i=1;i<=N;i++)
//		fprintf(g,"%d\n",A[i]);
	
	fclose(g);
	fclose(f);
	return 0;
}