program maximumCREW; const dosNmenosUno = 31; dosn = 32; n = 16; m = 4; mMenosUno = 3; dosElevadoAmMenosUno = 8; type vector = array[0..dosNmenosUno] of integer; var k : integer; inferior, superior : integer; a : vector; procedure leer; var i : integer; begin writeln( 'CALCULO PARALELO DEL MAXIMO DE UN ARRAY MEDIANTE UNA TECNICA'); writeln( 'DE ARBOL BINARIO BALANCEADO.'); writeln( 'Introduzca el array:'); i := n; while (i < dosn ) do begin write( 'elemento[', i - n , '] = '); read(a[i]) ; i := i + 1; end; end; begin leer; k := mMenosUno; superior := ( 1 shl (k + 1) ) - 1; inferior := ( 1 shl k ); while ( k >= 0 ) do begin parallel inferior..superior do begin A[name] := a[2*name]; if (A[2 * name ] < A[ 2 * name + 1]) then A[name] := A[2*name + 1]; end; k := k - 1; superior := inferior; inferior := inferior shr 1; end; write( 'El m ximo es : ', a[1] ); end.