Cod sursa(job #1022146)

Utilizator TheNechizFMI Razvan Birisan TheNechiz Data 4 noiembrie 2013 20:34:05
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.12 kb
# include <fstream>
# define dim 500001
using namespace std;

ifstream in("algsort.in");
ofstream out("algsort.out");

int a[dim],b[dim],n;

void mergesort( int a[] , int st , int m , int dr )
{
    int i,j,z;

    i = 0 ; j = st;
    // copiem prima jumate a vectorul a in b
    while( j <= m )
        b[i++] = a[j++];

    i = 0; z = st;
    // intersectam prima jumatate cu cea de-a doua
    while( z < j && j <= dr )
        if( b[i] <= a[j] )
            a[z++] = b[i++];
        else
            a[z++] = a[j++];

    // copiem elementele ramase (daca e cazul)
    while ( z < j )
        a[z++] = b[i++];
}

void sorteaza( int a[] , int st , int dr )
{
    if( st < dr )
    {
        sorteaza(a,st,(st+dr)/2);
        sorteaza(a,(st+dr)/2+1,dr);
        mergesort(a,st,(st+dr)/2,dr);
    }
}

void citeste()
{
    in >> n;
    for( int i = 1 ; i <= n ; ++i )
        in >> a[i];
    in.close();
}

void tipar()
{
    for( int i = 1 ; i <= n ;++i )
        out << a[i] << ' ';
    out.close();
}

int main()
{
    citeste();
    sorteaza(a,0,n);
    tipar();
    return 0;
}