結果

問題 No.429 CupShuffle
ユーザー TatamoTatamo
提出日時 2017-04-18 18:42:35
言語 JavaScript
(node v21.7.1)
結果
AC  
実行時間 256 ms / 2,000 ms
コード長 1,188 bytes
コンパイル時間 75 ms
コンパイル使用メモリ 5,248 KB
実行使用メモリ 66,016 KB
最終ジャッジ日時 2024-10-13 00:08:00
合計ジャッジ時間 3,254 ms
ジャッジサーバーID
(参考情報)
judge3 / judge5
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 69 ms
39,552 KB
testcase_01 AC 62 ms
39,168 KB
testcase_02 AC 61 ms
39,168 KB
testcase_03 AC 64 ms
39,296 KB
testcase_04 AC 61 ms
39,552 KB
testcase_05 AC 59 ms
39,168 KB
testcase_06 AC 65 ms
39,552 KB
testcase_07 AC 63 ms
39,552 KB
testcase_08 AC 60 ms
39,424 KB
testcase_09 AC 66 ms
39,296 KB
testcase_10 AC 87 ms
46,080 KB
testcase_11 AC 256 ms
66,016 KB
testcase_12 AC 246 ms
65,764 KB
testcase_13 AC 251 ms
65,908 KB
testcase_14 AC 251 ms
65,516 KB
testcase_15 AC 65 ms
39,168 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

var input = require("fs").readFileSync("/dev/stdin", "utf8");
input = input.split("\n");
input.pop();
let nkx = input.shift().split(" ");
let n = +nkx[0];
let k = +nkx[1];
let x = +nkx[2] - 1;
let swap = new Array(k);
let cups = new Array(n + 1);
for (let i = 0; i <= n; i++) {
    cups[i] = i;
}
let c = input.pop().split(" ").map((x) => { return +x; });
for (let i = 0; i < k; i++) {
    let line = input[i].split(" ");
    if (i == x) {
        swap[i] = { a: -1, b: -1 };
        continue;
    }
    let a = +line[0];
    let b = +line[1];
    swap[i] = { a: a, b: b };
}
// 前から
for (let i = 0; i < x; i++) {
    let query = swap[i];
    let a = query.a;
    let b = query.b;
    let tmp = cups[a];
    cups[a] = cups[b];
    cups[b] = tmp;
}
// 後ろから
c.unshift(0);
for (let i = k - 1; i > x; i--) {
    let query = swap[i];
    let a = query.a;
    let b = query.b;
    let tmp = c[a];
    c[a] = c[b];
    c[b] = tmp;
}
let ans_a = 0;
let ans_b = 0;
for (let i = 0; i <= n; i++) {
    if (cups[i] != c[i]) {
        if (ans_a == 0) {
            ans_a = i;
        }
        else {
            ans_b = i;
            break;
        }
    }
}
console.log(ans_a, ans_b);
0