Cod sursa(job #759011)

Utilizator chimistuFMI Stirb Andrei chimistu Data 16 iunie 2012 15:18:45
Problema Sortare prin comparare Scor 40
Compilator fpc Status done
Runda Arhiva educationala Marime 1.36 kb
type vector=array[1..500000] of longint;
var n,q:longint;
f,g:text;
a:array[1..500000] of longint;
procedure merge (var a:vector;i,j,mij:longint);
var o:array[1..500000] of longint;
x,y,q,k:longint;
begin
        x:=i;y:=mij+1; k:=i;
        while (x<=mij) and (y<=j) do begin
                if a[x]<a[y] then  begin
                        o[k]:=a[x];
                        x:=x+1;    end
                else     begin
                        o[k]:=a[y];
                        y:=y+1;end;
                k:=k+1;
        end;
        while x<=mij do    begin
                o[k]:=a[x];
                k:=k+1;
                x:=x+1;end;
        while y<=j do begin
                o[k]:=a[y];
                k:=k+1;
                y:=y+1;end;
        for q:=i to j do
                a[q]:=o[q];

end;
procedure sort(var a:vector;st,dr:integer);
var mij:longint;
begin
        if st<dr then begin
                mij:=(st+dr) div 2;
                sort (a,st,mij);
                sort (a,mij+1,dr);
                merge(a,st,dr,mij);
        end;
end;
begin
        assign (f,'algsort.in');reset (f);
        assign (g,'algsort.out');rewrite (g);
        read (f,n);
        for q:=1 to n do
                read(f,a[q]);
        sort(a,1,n);
        for q:=1 to n do
                write (g,a[q],' ');
        close (g);
end.