結果
| 問題 | No.3724 Domination |
| コンテスト | |
| ユーザー |
occhan
|
| 提出日時 | 2026-09-20 14:37:05 |
| 言語 | JavaScript (node v26.7.0 + ACL) |
| 結果 |
AC
不安定
|
| 実行時間 | 248 ms / 2,000 ms |
| + 29µs | |
| コード長 | 7,165 bytes |
| 記録 | |
| コンパイル時間 | 3 ms |
| コンパイル使用メモリ | 9,808 KB |
| 実行使用メモリ | 127,928 KB |
| 最終ジャッジ日時 | 2026-09-20 14:37:39 |
| 合計ジャッジ時間 | 14,314 ms |
|
ジャッジサーバーID (参考情報) |
judge2_0 / judge3_0 |
(要ログイン)
| サブタスク | 配点 | 結果 |
|---|---|---|
| 部分点 | 20 % | AC * 8 |
| 満点 | 80 % | AC * 52 |
| 合計 | 2.5 * 100% = 250 点 |
ソースコード
"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 T = nextNum();
let ans = [];
while (T--) {
let N = nextNum();
let R = nextNums(N);
let C = nextNums(N);
if (N == 1) {
ans.push(1);
continue;
}
if (N == 2) {
ans.push(-1);
continue;
}
let f = true;
for (let i = 1; i < N; i++) {
if (C[i] != C[0])
f = false;
}
if (f && N <= 4) {
ans.push(-1);
continue;
}
let A = Array.from({ length: N }, (_, i) => Array(N).fill(R[i]));
if (f) {
let x = C[0];
let r = 0;
while (R[r] != x)
r++;
let rows = [];
for (let i = 0; i < N; i++) {
if (i != r)
rows.push(i);
}
for (let j = 0; j < N; j++) {
let i = rows[j % rows.length];
A[i][j] = x;
}
}
else {
let row = Array.from({ length: N }, (_, i) => i);
let bad = [];
for (let j = 0; j < N; j++) {
if (R[j] == C[j]) {
bad.push(j);
}
}
if (bad.length >= 2) {
for (let k = 0; k < bad.length; k++) {
row[bad[k]] = bad[(k + 1) % bad.length];
}
}
else if (bad.length == 1) {
let b = bad[0];
let k = 0;
while (k == b || C[k] == R[b])
k++;
[row[b], row[k]] = [row[k], row[b]];
}
for (let j = 0; j < N; j++) {
let i = row[j];
A[i][j] = C[j];
}
}
for (let i = 0; i < N; i++) {
ans.push(A[i].join(" "));
}
}
print(ans, "\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
occhan