Cod sursa(job #1689484)

Utilizator medicinedoctoralexandru medicinedoctor Data 14 aprilie 2016 12:03:46
Problema Radix Sort Scor 0
Compilator fpc Status done
Runda Arhiva educationala Marime 0.93 kb
var x:array [1..10000000] of longword;
n,a,b,c:longword;

procedure init;
var i:longword;
begin
  x[1]:=b;
  for i:=2 to n do
    x[i]:=(a*x[i-1]+b) mod c;
end;

procedure lire;
begin
  assign(input,'radixsort.in');
  reset(input);
  read(n,a,b,c);
  close(input);
  init;
end;

procedure ecrire;
var i:longword;
begin
  assign(output,'radixsort.out');
  rewrite(output);
  n:=n div 10;
  for i:=0 to n do
    write(x[i+1],' ');
  close(output);
end;

procedure ss(var x,y:longword);
var q:longword;
begin
  q:=x;
  x:=y;
  y:=q;
end;

procedure qs(r,l:longword);
var i,j,q:longword;
begin
  i:=r; j:=l; q:=x[(i+j) div 2];
  while (i<j) do
  begin
    while (x[i]<q) do i:=i+1;
    while (x[j]>q) do j:=j-1;
    if (i<=j) then
    begin
      ss(x[i],x[j]);
      i:=i+1;
      j-=1;
    end;
  end;
  if (i<l) then qs(i,l);
  if (j>r) then qs(r,j);
end;

begin
  lire;
  qs(1,n);
  ecrire;
end.