Cod sursa(job #554090)

Utilizator DanceKrissCristian Oancea DanceKriss Data 14 martie 2011 16:47:37
Problema Arbori de intervale Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.26 kb
#include <iostream>
#include<stdio.h>
#define DIM (1<<17)
using namespace std;

typedef struct nod
    {
        int inf,ind;
        nod *st,*dr;
    }*ARB;
ARB r; // r- radacina arborelui
int v[DIM],n,m,
    T[DIM],P[DIM],k;
void update(ARB &, int,int  );
void supprimer(ARB &,int);
void read()
{
    scanf("%d",&n);
    r = 0;
    for( int i=1; i<=n; i++ )
        {
            scanf("%d",&v[i]);
            update(r,v[i],i);
        }
}
void update(ARB &t, int x , int ii )
{
    if( t==0 )
        {
            t = new nod;
            t->inf = x; t->ind = ii;
            t->st = t->dr = 0;
        }
    else
        if( t->inf<=x )
            update(t->dr,x,ii);
        else update(t->st,x,ii);
}
void supprimer( ARB &t, int x )
{
    if( t->inf<x ) supprimer(t->dr,x);
    if( t->inf>x ) supprimer(t->dr,x);
    if( t->inf==x)
     {
         // 3 cazuri
     }
}
void SRD(ARB a)
{
    if(a)
        {
            SRD(a->st);
            P[k++] = a->ind;
            cout<<a->inf<<" ";
            SRD(a->dr);
        }
}

int main()
{
    freopen("aib.in","r",stdin);
    freopen("aib.out","w",stdout);
    read();
    SRD(r);cout<<endl;
    int i=0;
    while(i<n) printf("%d  ",P[i++]);
    return 0;
}