Cod sursa(job #1346987)

Utilizator laura.calimanLaura Caliman laura.caliman Data 18 februarie 2015 18:33:37
Problema Radix Sort Scor 30
Compilator fpc Status done
Runda Arhiva educationala Marime 0.84 kb
var n,i,j,a,b,c:longint;
    v,m:array[1..10000000] of longint;
    
procedure sw(var a,b:longint);
var c:longint;
begin
  c:=a;
  a:=b;
  b:=c;
end;

procedure sort(st,dr:longint);
var i,j,p:longint;
begin
  i:=st;
  j:=dr;
  p:=v[(i+j) div 2];
  while i<j do begin
    while v[i]<p do inc(i);
    while v[j]>p do dec(j);
    if i<=j then begin
      sw(v[i],v[j]);
      inc(i);
      dec(j);
    end;
  end;
  if i<dr then sort(i,dr);
  if st<j then sort(st,j);
end;
    
begin
  assign(input,'radixsort.in');
  assign(output,'radixsort.out');
  reset(input);
  rewrite(output);
  read(n,a,b,c);
  v[1]:=b;
  for i:=2 to n do 
    v[i]:=(a*v[i-1] + b) mod c;
  sort(1,n);
  j:=0;
  i:=1;
  while i<=n do begin
    inc(j);
    m[j]:=v[i];
    inc(i,10);
  end;
  for i:=1 to j do
    write(m[i],' ');
end.