/**
 * @param {number[]} asteroids
 * @return {number[]}
 */
var asteroidCollision = function (asteroids) {
  let result = []

  //   const pushOrIgnore = (n) => {
  //     let last = result[result.length - 1]
  //     console.log(`pushOrIgnore - n: ${n}, l: ${last}`)
  //     console.log(result)
  //
  //
  //     if (last > n || last < 0) {
  //       // if ((result[result.length - 1] ?? -Infinity) < n) result.push(-n)
  //       return
  //     }
  //
  //     if (last == n) {
  //       console.log("l===n")
  //       result.pop()
  //     } else if (last < n) {
  //       console.log("l<n")
  //       result.pop()
  //       result.push(-n)
  //     }
  //
  //     return pushOrIgnore(n)
  //   }

  for (let i = 0; i < asteroids.length; i++) {
    let curr = asteroids[i]
    if (curr > 0 || i === 0) {
      result.push(curr);
      continue;
    }

    // console.log(`-> in here curr: ${curr}`)
    console.log(`> i: ${i}, curr: ${curr}`)
    console.log(result)
    curr *= -1;

    // let last = result[result.length - 1];
    // console.log(`> last: ${last}, curr: ${curr}`)

    let last = null, idx = result.length - 1, collided = false;
    while (idx >= 0) {
      last = result[idx] // last in result
      console.log(`-> idx: ${idx}, last: ${last}`)

      if (
        (last < 0) // same direction
        || (last > curr) // bigger
      ) break // prev/last > curr
      // all positive

      console.log(result)

      // if (result.length > 0)

      result.pop();
      if (last === curr) {
        collided = true;
        break;
      }
      idx--;
    }

    if (collided) continue

    console.log("after")
    console.log(result)
    // console.log(`--> last: ${last}, curr: ${curr}`)
    // if (last < 0) last *= -1;
    // if ((result[result.length - 1] ?? -Infinity) < curr) result.push(-curr)
    if (last < curr) result.push(-curr)
    // curr is <

    // pushOrIgnore(curr)
  }

  return result;
};

let x =
  // asteroidCollision([-2, 1, -2, -2]) // [-2,-2,-2]
  // asteroidCollision([-2, -2, 1, -1]) // [-2,-2]
  // asteroidCollision([-2, -1, 1, 2])
  // asteroidCollision([5, 10, -15])
  // asteroidCollision([5, 10, -5])
  // asteroidCollision([8, -8])
  asteroidCollision([10, 2, -5])
console.log("Res")
console.log(x)