编辑代码

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void (async function () {
  // 读取输入:
  // n: 数组长度
  // arrA: 第一个数组
  // arrB: 第二个数组
  const n = Number(await readline());
  const arrA = (await readline()).split(" ").map(Number);
  const arrB = (await readline()).split(" ").map(Number);

  // 记录最终得分
  let res = 0;

  // 对两个数组进行升序排序
  arrA.sort((a, b) => a - b);
  arrB.sort((a, b) => a - b);

  // 当arrA还有元素时继续处理
  while (arrA.length > 0) {
    // 初始化两个指针,用于在arrB中查找合适的匹配
    let idxA = 0; // arrA的当前元素
    let idxB = 0; // arrB的查找位置

    // 在arrB中查找第一个大于等于arrA[idxA]的元素
    while (arrA[idxA] > arrB[idxB]) {
      idxB++;
    }

    // 如果找不到合适的匹配(idxB为0)
    if (idxB == 0) {
      // 移除arrA的第一个元素
      arrA.shift();
      // 移除arrB的最后一个元素(最坏情况)
      arrB.pop();
      // 得分减1
      res--;
    } else {
      // 找到合适的匹配
      // 移除arrA的第一个元素
      arrA.shift();
      // 移除arrB中匹配位置的前一个元素
      arrB.splice(idxB - 1, 1);
      // 得分加1
      res++;
    }
  }

  // 输出最终得分
  console.log(res);
})();