結果
問題 |
No.3042 拡大コピー
|
ユーザー |
|
提出日時 | 2025-02-28 23:59:20 |
言語 | JavaScript (node v23.5.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,809 bytes |
コンパイル時間 | 238 ms |
コンパイル使用メモリ | 8,744 KB |
実行使用メモリ | 210,104 KB |
最終ジャッジ日時 | 2025-03-01 07:42:26 |
合計ジャッジ時間 | 5,688 ms |
ジャッジサーバーID (参考情報) |
judge6 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | -- * 1 |
other | WA * 1 TLE * 1 -- * 22 |
ソースコード
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); for (let i = 0; i < N; i++) { x[i] = Math.round(x[i] * 10 ** 6); y[i] = Math.round(y[i] * 10 ** 6); z[i] = Math.round(z[i] * 10 ** 6); w[i] = Math.round(w[i] * 10 ** 6); } //座標圧縮 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_zw_map = new Map(); for (let i = 0; i < N; i++) new_zw_map.set(new_z[i] + "," + new_w[i], i); for (let i = 0; i < N; i++) { const idx = new_zw_map.get(new_x[i] + "," + new_y[i]); if (idx === undefined) continue; console.log(z[idx] / x[i]); break; } } Main(require("fs").readFileSync(0, "utf8"));