ARC004 A - 2点間距離の最大値 ( The longest distance )

備忘録

問題

atcoder.jp

回答

"use strict"
function Main(input) {
  input = input.trim().split('\n');
  const n = Number(input.slice(0, 1));
  const arr = input.slice(1, input.length);
 
  let ans=-1;
  for(let i=0; i<arr.length; ++i){
    for(let o=0; o<arr.length; ++o){
      if(i===o) continue;
      let x1 = Number(arr[i].split(' ')[0]);
      let y1 = Number(arr[i].split(' ')[1]);
      
      let x2 = Number(arr[o].split(' ')[0]);
      let y2 = Number(arr[o].split(' ')[1]);
 
      let ret = Math.sqrt(Math.pow((x1-x2), 2) + Math.pow((y1-y2), 2));
      if(ans<ret) ans=ret;
    }
  }
 
  console.log(ans);
}
 
Main(require("fs").readFileSync("/dev/stdin", "utf8"));

考え方

与えられた点(x, y)の2点間の距離を全パターン算出して、一番大きい値を保持しておくだけ。
問題を最初見たとき、制限時間超過を気にして全パターンの算出に躊躇したが、
与えられる点の個数が2≦N≦100なので、多くても10000回程度のループなので全パターン検索で問題なかった。

あとは中学で習う2点間の距離を求める計算を行えば、問題なく解ける問題(だったが、わからなかったので普通に調べた。。)

2点間の距離の公式