Cod sursa(job #589891)

Utilizator vendettaSalajan Razvan vendetta Data 14 mai 2011 11:42:51
Problema Sortare prin comparare Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 1.46 kb
type vec = array[0 .. 500000] of longint ;
var A : vec ;
    i, N : longint ;
    f : text ;
    Bufin : array[1 .. 1 shl 17] of char;

    procedure quicksort ( var vector : vec ; st : longint ; dr : longint ) ;
        var temp, min, max, mij : longint ;

        begin
            mij := vector[st + random ( ( dr - st ) div 2 ) ] ;
            min := st ; max := dr ;
            while ( min <= max ) do begin
                while ( vector[min] < mij ) do
                    inc ( min ) ;
                while ( vector[max] > mij ) do
                    dec ( max ) ;
                if ( min <= max ) then
                    begin
                        temp := vector[min] ;
                        vector[min] := vector[max] ; inc ( min ) ;
                        vector[max] := temp ; dec ( max ) ;
                    end;
            end ; //until min > max ;

            if ( st < max ) then
                quicksort ( vector, st, max ) ;
            if ( dr > min ) then
                quicksort ( vector, min, dr ) ;
        end ;


        begin
     assign ( f, 'algsort.in' ) ; reset ( f ) ;
     SetTextBuf ( f, Bufin ) ;

     readln ( f, N ) ;
     for i := 1 to N do
         read ( f, A[i] ) ;

     close ( f ) ;

     quicksort ( A, 1, N ) ;

     assign ( f, 'algsort.out' ) ; rewrite ( f ) ;
     SetTextBuf ( f, Bufin ) ;

     for i := 1 to N do
         write ( f, A[i], ' ' ) ;
     close ( f ) ;

   end .