Cod sursa(job #599472)

Utilizator Luncasu_VictorVictor Luncasu Luncasu_Victor Data 28 iunie 2011 20:49:11
Problema Sortare prin comparare Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 1.32 kb
const   fin = 'algsort.in'; fout = 'algsort.out';

type
        vector = array[1..500 * 1000] of longword;
        buffer = array[1..1 shl 20] of char;
var
        x : vector;
        bufin ,bufout : buffer;
        n : longword;

procedure swap( var a , b : longword );
var
        c : longword;
begin
        c := a; a := b; b := c;
end;

procedure quicksort( st ,dr : longword );
var
        i ,j ,m : longword;
begin
        i := st; j := dr; m := x[(i + j) div 2];
        while (i < j) do
        begin
                while (x[i] < m) do i := i + 1;
                while (x[j] > m) do j := j - 1;
                if (i <= j) then
                begin
                        swap( x[i], x[j] );
                        i := i + 1;
                        j := j - 1;
                end;
        end;
        if (i < dr) then quicksort( i , dr );
        if (j > st) then quicksort( st , j );
end;

procedure main();
var
        i : longword;
begin
        assign( input, fin ); reset( input );
        assign( output, fout ); rewrite( output );
        settextbuf( input, bufin );
        settextbuf( output, bufout );

        readln( n );
        for i := 1 to n do read( x[i] );

        quicksort( 1, n );

        for i := 1 to n do write( x[i], #32 );
end;

begin
        main();
end.