Pagini recente » Cod sursa (job #1734781) | Cod sursa (job #145193) | Cod sursa (job #2574854) | Cod sursa (job #306458) | Cod sursa (job #480430)
Cod sursa(job #480430)
type vec = array[0..500000] of longint ;
vec1 = string[255] ;
var A : vec ;
i, N, len, l : longint ;
f : text ;
x : vec1 ;
Bufin, Bufout : array[1..1 shl 17]of boolean;
function parse ( var x : vec1 ; var a : longint ) : longint ;
var i , y : longint;
begin
i := a; y := 0;
while (i <= len) do
begin
if ( x[i] >= '0' ) and ( x[i] <= '9' ) then
y := y * 10 + ord(x[i]) - 48
else
begin
if ( i = 255 ) then
begin
a := 1 ; i := 0;
read ( f, x ) ;
len := length ( x ) ;
end ;
inc ( i ) ;
break;
end;
if ( i = 255 ) then
begin
a := 1 ; i := 0;
read ( f, x ) ;
len := length ( x ) ;
end ;
inc ( i ) ;
end;
a := i;
parse := y;
end;
procedure quicksort ( var vector : vec ; st : longint ; dr : longint ) ;
var temp, min, max, mij : longint ;
begin
mij := vector[st + (dr - st) div 2] ;
min := st ; max := dr ;
repeat
while ( vector[min] < mij ) do
inc ( min ) ;
while ( vector[max] > mij ) do
dec ( max ) ;
if ( min <= max ) then
begin
temp := vector[min] ;
vector[min] := vector[max] ; inc ( min ) ;
vector[max] := temp ; dec ( max ) ;
end;
until min > max ;
if ( st < max ) then
quicksort ( vector, st, max ) ;
if ( dr > min ) then
quicksort ( vector, min, dr ) ;
end ;
begin
assign ( f, 'algsort.in' ) ; reset ( f ) ;
SetTextBuf ( f, Bufin ) ;
readln ( f, N ) ;
// read ( f, x ) ; len := length ( x ) ; l := 1;
for i := 1 to N do
read ( f, A[i] ) ;//A[i] := parse ( x, l ) ;
close ( f ) ;
quicksort ( A, 1, N ) ;
assign ( f, 'algsort.out' ) ; rewrite ( f ) ;
SetTextBuf ( f, Bufin ) ;
for i := 1 to N do
write ( f, A[i], ' ' ) ;
close ( f ) ;
end .