编辑代码

// 设置标准输入接口
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void (async function () {
  const minAverageLost = Number(await readline());
  const averageArr = (await readline()).split(" ").map(Number);
  let ans = [];
  let left = 0,
    right = 0;
  let average = 0;
  let maxLength = 0;
  const preArr = new Array(averageArr.length + 1).fill(0);
  preArr[0] = 0;
  for (let i = 1; i < preArr.length; i++) {
    preArr[i] = preArr[i - 1] + averageArr[i - 1];
  }
  while (right < averageArr.length) {
    // 计算当前窗口的平均值
    average = (preArr[right + 1] - preArr[left]) / (right - left + 1);

    if (average <= minAverageLost) {
      // 如果平均值满足条件,扩大窗口
      right++;
    } else {
      // 在窗口扩大后也要检查是否是最长区间
      if (right - left > maxLength) {
        maxLength = right - left;
        ans = [`${left}-${right - 1}`];
      } else if (right - left === maxLength) {
        ans.push(`${left}-${right - 1}`);
      }
      // 如果平均值不满足条件,移动左指针
      left++;
      // 确保左指针不会超过右指针
      if (left > right) {
        right = left;
      }
    }
  }

  // 检查最后一个窗口
  if (right !== left) {
    if (right - left > maxLength) {
      maxLength = right - left;
      ans = [`${left}-${right - 1}`];
    } else if (right - left === maxLength) {
      ans.push(`${left}-${right - 1}`);
    }
  }

  console.log(ans.join(" "));
})();