結果

問題 No.3723 Climb or Detour
コンテスト
ユーザー occhan
提出日時 2026-09-20 13:53:27
言語 JavaScript
(node v26.7.0 + ACL)
コンパイル:
true
実行:
node _filename_ ONLINE_JUDGE
結果
AC  
実行時間 80 ms / 2,000 ms
+ 407µs
コード長 5,990 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 3 ms
コンパイル使用メモリ 9,812 KB
実行使用メモリ 82,364 KB
最終ジャッジ日時 2026-09-20 13:53:59
合計ジャッジ時間 9,229 ms
ジャッジサーバーID
(参考情報)
judge3_1 / judge2_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 58
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

"use strict";
// start
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    var desc = Object.getOwnPropertyDescriptor(m, k);
    if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
      desc = { enumerable: true, get: function() { return m[k]; } };
    }
    Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
    Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
    o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
    var ownKeys = function(o) {
        ownKeys = Object.getOwnPropertyNames || function (o) {
            var ar = [];
            for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
            return ar;
        };
        return ownKeys(o);
    };
    return function (mod) {
        if (mod && mod.__esModule) return mod;
        var result = {};
        if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
        __setModuleDefault(result, mod);
        return result;
    };
})();
Object.defineProperty(exports, "__esModule", { value: true });
const fs = __importStar(require("node:fs"));
function main() {
    // ここに処理を記述します
    let [N, K] = nextNums(2);
    let [sx, sy, tx, ty] = nextNums(4).map(v => v - 1);
    let dist = Math.abs(sx - tx) + Math.abs(sy - ty);
    if (K < dist) {
        print(-1);
        return;
    }
    if ((K - dist) % 2) {
        print(-1);
        return;
    }
    if (K > dist + 2 * intDiv(dist, 2)) {
        print(-1);
        return;
    }
    let x = intDiv(K - dist, 2);
    let ans = Array.from({ length: N }, () => Array(N).fill("."));
    for (let i = 0; i < N; i++) {
        for (let j = 0; j < N; j++) {
            let d = Math.abs(i - sx) + Math.abs(j - sy);
            if (d < x * 2 && d % 2) {
                ans[i][j] = "#";
            }
        }
    }
    print(ans.map(v => v.join("")).join("\n"));
    // 処理終了
}
const less = (a, b) => (a == b ? 0 : a < b ? -1 : 1);
const greater = (a, b) => (a == b ? 0 : a < b ? 1 : -1);
const bigIntMax = (...args) => args.reduce((m, e) => (e > m ? e : m));
const bigIntMin = (...args) => args.reduce((m, e) => (e < m ? e : m));
const bigIntAbs = (arg) => (arg < 0 ? -arg : arg);
/**
 * 説明: 非負 bigint n の床平方根 floor(sqrt(n)) を正確に返す。
 * 使い方: let x = bigIntSqrt(n)
 * 計算量: O(log bit長)
 */
const bigIntSqrt = (n) => {
    if (n < 0n) {
        throw new RangeError("square root of negative bigint");
    }
    if (n < 2n)
        return n;
    let bitLength = n.toString(2).length;
    let x = 1n << BigInt((bitLength + 1) >> 1);
    while (true) {
        let next = (x + n / x) >> 1n;
        if (next >= x)
            return x;
        x = next;
    }
};
let inputs = "";
let inputArray;
let currentIndex = 0;
let outputBuffer = "";
let yes = "Yes";
let no = "No";
let MOD998244353 = 998244353;
let small_a_code = 97;
let big_A_code = 65;
let dxy4 = [[-1, 0], [0, 1], [1, 0], [0, -1]];
let dxy8 = [[-1, 0], [-1, 1], [0, 1], [1, 1], [1, 0], [1, -1], [0, -1], [-1, -1]];
let dir4 = ["U", "R", "D", "L"];
// // インタラクティブ用
// // お決まりのインプットはコメントアウト、main関数にasyncを忘れない
// // 詳しくは典型ABC305-Fをチェック
// const readline = require("readline");
// const rl = readline.createInterface({
//   input: process.stdin,
//   output: process.stdout,
// });
// const it = rl[Symbol.asyncIterator]();
// const nextAwait = async () => {
//   const { value } = await it.next();
//   return value.trim();
// };
function next() {
    return inputArray[currentIndex++];
}
function nextNum() {
    return +next();
}
function nextBigInt() {
    return BigInt(next());
}
function nexts(length) {
    const arr = [];
    for (let i = 0; i < length; ++i)
        arr[i] = next();
    return arr;
}
function nextNums(length) {
    const arr = [];
    for (let i = 0; i < length; ++i)
        arr[i] = nextNum();
    return arr;
}
function nextBigInts(length) {
    const arr = [];
    for (let i = 0; i < length; ++i)
        arr[i] = nextBigInt();
    return arr;
}
function print(out, separator) {
    if (Array.isArray(out)) {
        outputBuffer += out.join(separator);
    }
    else {
        outputBuffer += out;
    }
}
function println(out, separator) {
    if (Array.isArray(out)) {
        print(out, separator || "");
    }
    else {
        print(out);
    }
    print("\n");
}
function flush() {
    if (outputBuffer.length == 0)
        return;
    console.log(outputBuffer.endsWith("\n")
        ? outputBuffer.slice(0, -1)
        : outputBuffer);
}
function intDiv(a, b) {
    return Math.trunc(a / b);
}
// end
function readInput() {
    const g = globalThis;
    // Deno
    if (typeof g.Deno !== "undefined") {
        const chunks = [];
        const buf = new Uint8Array(1 << 16);
        while (true) {
            const n = g.Deno.stdin.readSync(buf);
            if (n === null)
                break;
            if (n > 0)
                chunks.push(buf.slice(0, n));
        }
        const length = chunks.reduce((s, c) => s + c.length, 0);
        const bytes = new Uint8Array(length);
        let offset = 0;
        for (const c of chunks) {
            bytes.set(c, offset);
            offset += c.length;
        }
        return new TextDecoder().decode(bytes);
    }
    // Node.js / Bun
    return fs.readFileSync(0, "utf8");
}
inputs = readInput();
inputArray = inputs.trim().split(/\s+/);
main();
flush();
/**
 * https://github.com/occhanCode/atcoder-templates/blob/main/src/main.ts
 */ 
//# sourceMappingURL=main.js.map
0