Cod sursa(job #2082461)

Utilizator RaduMirceaAndreiRadu Mircea Andrei RaduMirceaAndrei Data 6 decembrie 2017 11:31:45
Problema Sortare prin comparare Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 1.15 kb
# include <fstream>
# include <stdlib.h>
# include <time.h>
# define DIM 500010
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
struct nod{
    int val;
    nod *st,*dr;
} *tata;
int v[DIM],n,i,poz;
void adauga(nod *&nc,int el){
    if(nc==NULL){
        nc=new nod;
        nc->val=el;
        nc->st=NULL;
        nc->dr=NULL;
        return;
    }
    if(el<nc->val)
        adauga(nc->st,el);
    else{
        if(el>nc->val)
            adauga(nc->dr,el);
        else{
            int urm=rand()%2;
            if(urm==0)
                adauga(nc->st,el);
            else
                adauga(nc->dr,el);
        }
    }
}
void afisare(nod *nc){
    if(nc!=NULL){
        afisare(nc->st);
        fout<<nc->val<<" ";
        afisare(nc->dr);
    }
}
int main () {
    fin>>n;
    for(i=1;i<=n;i++)
        fin>>v[i];
    srand(time(0));
    for(i=n;i>=2;i--){
        poz=rand()%(i-1)+1;
        swap(v[i],v[poz]);
    }
    tata=new nod;
    tata->val=v[1];
    tata->st=NULL;
    tata->dr=NULL;
    for(i=2;i<=n;i++)
        adauga(tata,v[i]);
    afisare(tata);
    return 0;
}