Cod sursa(job #2492590)

Utilizator VanillaSoltan Marian Vanilla Data 14 noiembrie 2019 22:57:14
Problema Sortare prin comparare Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 1.69 kb
var i,e,o,l,p,n:longint;
type vector = array[1..500003] of longint;
var arr:vector;
fin,fout:textfile;
procedure merge(var arr:vector;left,mid,right:longint);
var i,l,j,k,m:longint;
temp:vector;
begin
        k:=1;
        i:=left;
        j:=mid+1;
        while (i<=mid) and (j<=right) do begin
                if arr[i]>arr[j] then begin
                        temp[k]:=arr[j];
                        inc(j);
                        inc(k);
                        end
                else begin
                        temp[k]:=arr[i];
                        inc(i);
                        inc(k);
                        end;
                end;
        for m:=i to mid do begin
                temp[k]:=arr[m];
                inc(k);
                end;
        for m:=j to right do begin
                temp[k]:=arr[m];
                inc(k);
                end;
        for i:=left to right do begin
                arr[i]:=temp[i-left+1];
                end;
end;
procedure mergesort(var arr:vector;left,right:longint);
var mid:longint=0;
begin
        if left<right then begin
                mid:=(right+left) div 2;
                mergesort(arr,left,mid);
                mergesort(arr,mid+1,right);
                merge(arr,left,mid,right);
                end;
end;


begin
        assign(fin,'algsort.in');
        reset(fin);
        assign(fout,'algsort.out');
        rewrite(fout);
        readln(fin,n);
        for i:=1 to n do begin
                read(fin,arr[i]);
                end;
        mergesort(arr,1,n);
        for i:=1 to n do
                write(fout,arr[i],' ');
        close(fin);
        close(fout);
end.