Pagini recente » Cod sursa (job #619990) | Cod sursa (job #261474) | Cod sursa (job #1414277) | Cod sursa (job #2460504) | Cod sursa (job #595039)
Cod sursa(job #595039)
#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;
}