Submission #66963357


Source Code Expand

function Main(inputText) {
    /** @type {String[][]} - スペース区切りと改行区切りをそのまま2次元配列に変えた状態 */
    const input = inputText.trim().split("\n").map(row => row.split(" "));
    /* ==== 本体 ==== */
    const [N, Q] = input[0].map(n => +n);
    const querys = [];
    for (let i = 1; i <= Q; i++) {
        if (+input[i][0] === 1) {
            querys.push({
                "type": 1,
                "p": +input[i][1]
            });
        }
        if (+input[i][0] === 2) {
            querys.push({
                "type": 2,
                "p": +input[i][1],
                "s": input[i][2]
            });
        }
        if (+input[i][0] === 3) {
            querys.push({
                "type": 3,
                "p": +input[i][1]
            });
        }
    }
    // Q個目のクエリのあとの鯖の値を、クエリを遡る形で求める
    // - N個目のクエリのあとの鯖の値 = (N以下でtype=3な最大のindex)個目のあとのPC[p]の値
    // - N個目のクエリのあとのPC[p]の値
    //       = (N以下でtype=1かつp=pな最大index)個目のあとの鯖の値
    //       + ↑以降N未満type=2かつp=pなそれぞれのindexについて、index個目のsの値
    // - ただし、(0未満)個目のあとはどちらも空文字列
    // っていう形で関数を作って再帰ラリーをする?
    const getServerStrOnAfter = (idx) => {
        // console.log(`getServerStrOnAfter(${idx})`);
        for (let i = idx - 1; i >= 0; i--) {
            if (querys[i].type === 3) {
                return getPCStr({"pc_num": querys[i].p, "onAfter": i});
            }
        }
        return "";
    };
    const getPCStr = (obj) => {
        // console.log(`getPCstr(pc_num = ${obj.pc_num}, idx = ${obj.onAfter})`)
        const pc_num = obj.pc_num;
        const idx = obj.onAfter;
        const additions = []; // ←type=2はここに入れておく
        for (let i = idx - 1; i >= 0; i--) {
            if (querys[i].type === 2 && querys[i].p === pc_num) {
                additions.push(querys[i].s);
                continue;
            }
            if (querys[i].type === 1 && querys[i].p === pc_num) {
                additions.push(getServerStrOnAfter(i));
                break;
            }
        }
        let result = "";
        while(additions.length > 0) {
            result += additions.pop();
        }
        return result;
    };
    console.log(getServerStrOnAfter(Q));
}
/* ==== これを書かないといけないらしい ==== */
Main(require("fs").readFileSync("/dev/stdin", "utf8"));

Submission Info

Submission Time
Task D - Conflict 2
User AXT_AyaKoto
Language JavaScript (Node.js 18.16.1)
Score 425
Code Size 2708 Byte
Status AC
Exec Time 398 ms
Memory 148232 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 425 / 425
Status
AC × 3
AC × 49
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt
All 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_random_00.txt, 01_random_01.txt, 01_random_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 01_random_12.txt, 01_random_13.txt, 01_random_14.txt, 01_random_15.txt, 02_random2_00.txt, 02_random2_01.txt, 02_random2_02.txt, 02_random2_03.txt, 02_random2_04.txt, 02_random2_05.txt, 02_random2_06.txt, 02_random2_07.txt, 02_random2_08.txt, 02_random2_09.txt, 02_random2_10.txt, 02_random2_11.txt, 02_random2_12.txt, 02_random2_13.txt, 02_random2_14.txt, 02_random2_15.txt, 03_random3_00.txt, 03_random3_01.txt, 03_random3_02.txt, 03_random3_03.txt, 04_random4_00.txt, 04_random4_01.txt, 05_random5_00.txt, 05_random5_01.txt, 06_handmade_00.txt, 06_handmade_01.txt, 06_handmade_02.txt, 06_handmade_03.txt, 06_handmade_04.txt, 06_handmade_05.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 36 ms 42700 KiB
00_sample_01.txt AC 36 ms 42520 KiB
00_sample_02.txt AC 36 ms 42696 KiB
01_random_00.txt AC 319 ms 49452 KiB
01_random_01.txt AC 171 ms 106196 KiB
01_random_02.txt AC 202 ms 123372 KiB
01_random_03.txt AC 41 ms 44668 KiB
01_random_04.txt AC 143 ms 89144 KiB
01_random_05.txt AC 74 ms 56552 KiB
01_random_06.txt AC 43 ms 46092 KiB
01_random_07.txt AC 63 ms 55068 KiB
01_random_08.txt AC 138 ms 88664 KiB
01_random_09.txt AC 166 ms 99552 KiB
01_random_10.txt AC 145 ms 90040 KiB
01_random_11.txt AC 83 ms 62584 KiB
01_random_12.txt AC 133 ms 85780 KiB
01_random_13.txt AC 135 ms 86300 KiB
01_random_14.txt AC 170 ms 103052 KiB
01_random_15.txt AC 148 ms 89328 KiB
02_random2_00.txt AC 210 ms 127912 KiB
02_random2_01.txt AC 209 ms 127184 KiB
02_random2_02.txt AC 209 ms 126928 KiB
02_random2_03.txt AC 209 ms 129076 KiB
02_random2_04.txt AC 229 ms 134684 KiB
02_random2_05.txt AC 262 ms 132144 KiB
02_random2_06.txt AC 280 ms 132436 KiB
02_random2_07.txt AC 289 ms 128504 KiB
02_random2_08.txt AC 228 ms 140768 KiB
02_random2_09.txt AC 301 ms 136436 KiB
02_random2_10.txt AC 324 ms 136748 KiB
02_random2_11.txt AC 232 ms 141700 KiB
02_random2_12.txt AC 246 ms 144992 KiB
02_random2_13.txt AC 362 ms 143988 KiB
02_random2_14.txt AC 333 ms 148232 KiB
02_random2_15.txt AC 336 ms 147248 KiB
03_random3_00.txt AC 394 ms 145096 KiB
03_random3_01.txt AC 396 ms 144468 KiB
03_random3_02.txt AC 398 ms 144612 KiB
03_random3_03.txt AC 372 ms 141740 KiB
04_random4_00.txt AC 394 ms 144440 KiB
04_random4_01.txt AC 396 ms 144308 KiB
05_random5_00.txt AC 198 ms 138872 KiB
05_random5_01.txt AC 206 ms 139432 KiB
06_handmade_00.txt AC 37 ms 42796 KiB
06_handmade_01.txt AC 40 ms 45796 KiB
06_handmade_02.txt AC 191 ms 122720 KiB
06_handmade_03.txt AC 193 ms 130720 KiB
06_handmade_04.txt AC 192 ms 125332 KiB
06_handmade_05.txt AC 195 ms 128820 KiB