0
0

More than 1 year has passed since last update.

ABC086C-Travelingの嘘解法を解く(Javascript版)

Last updated at Posted at 2023-07-27

どうもアットコーダーをJavascriptで解いてる野蛮人です。
300の問題、Travelingを解いてたのですが、どうしても解けなくて以下の記事を参考にしたところ、
https://qiita.com/ytanto/items/caf7bf0ba287da81b20f

まさかのWA!!
前の距離から次の目的地までが移動可能かがロジックに入っていないため、失敗するようでした。
私と同じ難民が出たらと思い、正解コードを晒しておきます。

Javascript
function Main(i) {
  let a = i.split(`\n`);
  a.pop();

  let total = [];

  for (let i = 0; i < Number(a[0]); i++) {
    if (i == 0) {
      let array = a[1].split(" ");
      let t = Number(array[0]);
      let x = Number(array[1]);
      let y = Number(array[2]);

      if (t >= x + y && t % 2 == (x + y) % 2) {
        total.push(true);
      } else {
        total.push(false);
      }
    } else {
      let array1 = a[i].split(" ");
      let array2 = a[i + 1].split(" ");

      let t1 = Number(array1[0]);
      let x1 = Number(array1[1]);
      let y1 = Number(array1[2]);
      let t2 = Number(array2[0]);
      let x2 = Number(array2[1]);
      let y2 = Number(array2[2]);
      let nextDistance = x1 + y1 - (x2 + y2);
      let nextDistance2 = x1 + x2 - (y1 + y2);

      if (
        Math.abs(t2 - t1) % 2 == Math.abs(nextDistance2) % 2 
        //奇偶数が一致しないとピッタリ止まれない
        &&
        t2 - t1 >= Math.abs(nextDistance)
        //次の地点へ移動可能な時間か判定する
      ) {
        total.push(true);
      } else {
        total.push(false);
      }
    }
  }

  let res = total.every((n) => {
    return n;
  });

  if (res) {
    console.log("Yes");
  } else {
    console.log("No");
  }
}

Main(require("fs").readFileSync("/dev/stdin", "utf8"));

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0