Pagini recente » Cod sursa (job #3199302) | Cod sursa (job #506503) | Cod sursa (job #1341487) | Cod sursa (job #1543992) | Cod sursa (job #1213655)
program radixsort;
type lista=^celula;
celula=record
info:longint;
next:lista;
end;
var n,a,b,c,i,x,k:longint;
a1:array [1..10000000]of longint;
t:array [0..99999] of lista;
r,q:lista;
bufout:array[1..100000] of byte;
begin
assign(input,'radixsort.in');
reset(input);
assign(output,'radixsort.out');
rewrite(output);
settextbuf(output,bufout);
readln(n,a,b,c);
a1[1]:=b;
for i:=2 to n do a1[i]:=(a1[i-1]*a+b)mod c;
for i:=1 to n do
begin
new(r);
r^.info:=a1[i];
x:=a1[i]mod 100000;
r^.next:=t[x];
t[x]:=r;
end;
for i:=0 to 99999 do
begin
r:=t[i];
while r<>nil do
begin
inc(k);
a1[k]:=r^.info;
r:=r^.next;
end;
t[i]:=nil;
end;
for i:=n downto 1 do
begin
new(r);
r^.info:=a1[i];
x:=a1[i]div 100000;
r^.next:=t[x];
t[x]:=r;
end;
k:=0;
for i:=0 to 99999 do
begin
r:=t[i];
while r<>nil do
begin
inc(k);q:=r;
if k mod 10 = 1 then write(r^.info, ' ');
r:=r^.next;
dispose(q);
end;
end;
close(output);
end.