Загрузка данных


function solution(container) {
  const rects = container.querySelectorAll('rect');
  const len = rects.length;
  
  // Сначала найдем максимальное значение, чтобы понять размер массива для подсчета
  let maxVal = 0;
  const values = new Array(len);
  
  for (let i = 0; i < len; i++) {
    const val = Number(rects[i].dataset.value);
    values[i] = val;
    if (val > maxVal) maxVal = val;
  }
  
  // Сортировка подсчетом (Counting Sort)
  const counts = new Array(maxVal + 1).fill(0);
  for (let i = 0; i < len; i++) {
    counts[values[i]]++;
  }
  
  // Восстанавливаем отсортированный массив
  const sorted = [];
  for (let i = 0; i <= maxVal; i++) {
    while (counts[i] > 0) {
      sorted.push(i);
      counts[i]--;
    }
  }
  
  // Ищем максимальный разрыв
  let maxGap = 0;
  for (let i = 1; i < sorted.length; i++) {
    const gap = sorted[i] - sorted[i - 1];
    if (gap > maxGap) {
      maxGap = gap;
    }
  }
  
  return maxGap;
}