Pagini recente » Cod sursa (job #1954605) | Cod sursa (job #578988) | Cod sursa (job #68490) | Cod sursa (job #1419456) | Cod sursa (job #663995)
Cod sursa(job #663995)
var v:array [1..500000] of longint;
i, j, n, aux:longint;
ok:boolean;
f, g:text;
procedure qsort (st, dr:longint);
var s, d, m:longint;
begin
s:=st; d:=dr;
m:=st+random(dr-st)+1;
aux:=v[m]; v[m]:=v[st]; v[st]:=aux;
while s<d do
begin
while (v[d]>=aux) and (s<d) do dec (d);
v[s]:=v[d];
while (v[s]<=aux) and (s<d) do inc (s);
v[d]:=v[s];
end;
v[s]:=aux;
if s-st>1 then qsort (st, s-1);
if dr-s>1 then qsort (s+1, dr);
end;
begin
assign (f, 'algsort.in'); reset (f);
assign (g, 'algsort.out'); rewrite (g);
randomize;
read (f, n);
for i := 1 to n do read (f, v[i]);
ok:=true;
if n>1000 then
begin
for i := 1 to 1000 do if v[i]<v[i+1] then ok := false;
end
else ok := false;
if ok = false then
begin
qsort (1, n);
for i := 1 to n do write (g, v[i], ' ');
end
else
for i := n downto 1 do write (g, v[i], ' ');
close (f); close (g);
end.