function [M, m] = MaxMin_IL(X)
  % MaxMin : Funcion para calcular el máximo o mínimo
  %          de cualquer arreglo
  % Recibe X puede ser una matriz o vector
  % Regresa M que es el máximo y m que es el mínimo
  x = X(:);

  % Generamos una matriz de comparación vectorizada (todos contra todos)
  % usando expansión implícita de dimensiones (broadcasting)
  comparacion = (x >= x.'); % matriz de Trues y Falses

  % Indexado lógico: El máximo es aquel elemento cuyas comparaciones
  % son todas verdaderas (su fila suma N de coincidencias)
  es_maximo = sum(comparacion, 2) == length(x);
  M = x(es_maximo);
  M = M(1); % Por si el máximo está repetido, tomamos el primero

  % El mínimo es aquel que es menor o igual a todos (su fila suma 1)
  es_minimo = sum(comparacion, 2) == 1;
  m = x(es_minimo);
  m = m(1); % Por si el mínimo está repetido
end

