結果
| 問題 |
No.3042 拡大コピー
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-02-28 23:54:23 |
| 言語 | JavaScript (node v23.5.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,719 bytes |
| コンパイル時間 | 209 ms |
| コンパイル使用メモリ | 8,484 KB |
| 実行使用メモリ | 201,496 KB |
| 最終ジャッジ日時 | 2025-03-01 07:42:20 |
| 合計ジャッジ時間 | 5,729 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge6 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| 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);
let idx = new_zw_map.get(new_x[0] + "," + new_y[0]);
console.log(z[idx] / x[0]);
}
Main(require("fs").readFileSync(0, "utf8"));