結果

問題 No.3042 拡大コピー
ユーザー bfs84
提出日時 2025-02-28 23:45:23
言語 JavaScript
(node v23.5.0)
結果
WA  
実行時間 -
コード長 1,632 bytes
コンパイル時間 112 ms
コンパイル使用メモリ 6,948 KB
実行使用メモリ 185,216 KB
最終ジャッジ日時 2025-03-01 07:42:16
合計ジャッジ時間 6,921 ms
ジャッジサーバーID
(参考情報)
judge4 / judge5
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample -- * 1
other WA * 1 TLE * 1 -- * 22
権限があれば一括ダウンロードができます

ソースコード

diff #

function Main(input) {
  input = input.split("\n").map((line) => line.trim());
  const N = Number(input[0]);
  const [x, y] = [[], []];
  for (let i = 0; i < N; i++) [x[i], y[i]] = input[i + 1].split(" ").map(Number);
  const [z, w] = [[], []];
  for (let i = 0; i < N; i++) [z[i], w[i]] = input[i + N + 1].split(" ").map(Number);

  //座標圧縮
  const compression = (A) => {
    const B = [...new Set(A)].sort((a, b) => a - b);
    let C = [];
    for (let i = 0; i < A.length; i++) C.push(findIdx(B, A[i]));
    return C;
  };

  const findIdx = (arr, key) => {
    let ng = -1;
    let ok = arr.length;
    while (ok - ng > 1) {
      let mid = Math.floor((ok + ng) / 2);
      if (arr[mid] >= key) ok = mid;
      else ng = mid;
    }
    return ok + 1;
  };

  const X = compression(x);
  const Y = compression(y);
  const Z = compression(z);
  const W = compression(w);
  const [map_x, map_y, map_z, map_w] = [new Map(), new Map(), new Map(), new Map()];
  for (let i = 0; i < N; i++) {
    map_x.set(x[i], X[i]);
    map_y.set(y[i], Y[i]);
    map_z.set(z[i], Z[i]);
    map_w.set(w[i], W[i]);
  }

  const new_x = x.map((v) => map_x.get(v));
  const new_y = y.map((v) => map_y.get(v));
  const new_z = z.map((v) => map_z.get(v));
  const new_w = w.map((v) => map_w.get(v));
  const new_xy_set = new Set();
  for (let i = 0; i < N; i++) new_xy_set.add(new_x[i] + "," + new_y[i]);
  const new_zw_map = new Map();
  for (let i = 0; i < N; i++) new_zw_map.set(new_z[i] + "," + new_w[i], i);
  let idx = new_zw_map.get(new_x[0] + "," + new_y[0]);
  console.log(z[idx] / x[0]);
}

Main(require("fs").readFileSync(0, "utf8"));
0