Cod sursa(job #1384267)

Utilizator casianos1996Marc Casian Nicolae casianos1996 Data 10 martie 2015 23:41:44
Problema Sortare prin comparare Scor 0
Compilator fpc Status done
Runda Arhiva educationala Marime 1.07 kb
program sortare_prin_comparare;
type    tabel=array [1..500001] of longint;
var     v,c:tabel;
        n,m,i,j,k:longint;
        f,g:text;

procedure interclaseaza(s,m,d:longint);
var     k,i,j:longint;
begin
  i:=s;j:=m+1;k:=0;
  while (i<=m)and(j<=d) do
    if v[i]<v[j] then
      begin
        inc(k);c[k]:=v[i];inc(i);
      end
    else
      begin
        inc(k);c[k]:=v[j];inc(j);
      end;
  while (i<=m) do
    begin
      inc(k);c[k]:=v[i];inc(i);
    end;
  while (j<=d) do
    begin
      inc(k);c[k]:=v[j];inc(j);
    end;
  k:=0;
  for i:=s to d do
    begin
      inc(k);
      v[i]:=c[k];
    end;
end;

procedure mergesort(s,d:longint);
var     m:longint;
begin
  if s<d then
    begin
      m:=(s+d) div 2;
      mergesort(s,m);
      mergesort(m+1,d);
      interclaseaza(s,m,d);
    end;
end;

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