"use strict"; import { readFileSync } from "fs"; let Users: User[] = []; const main = (arg: string) => { const input = arg .trim() .split("\n") .map((i) => i.split(" ")); // 一行目は破棄する input.shift(); input.map((i) => { const command = i[0]; switch (command) { case "0": { // 着席 const table = Number(i[1]); const favorite = i.splice(3); regist(table, favorite); break; } case "1": { // ネタを流す const neta = i[1]; eat(neta); break; } case "2": { // 退席 const table = Number(i[1]); remove(table); break; } default: { break; } } }); }; const regist = (table: number, favorite: string[]) => { Users.push({ table, favorite }); Users = Users.sort((u) => u.table); }; const remove = (table: number) => { Users = Users.filter((u) => u.table !== table); }; const eat = (favorite: string) => { for (const u of Users) { const idx = u.favorite.findIndex((u) => u === favorite); if (idx > -1) { u.favorite.splice(idx, 1); console.log(u.table); return; } } console.log(-1); }; interface User { table: number; favorite: string[]; } // debug // main( // [ // "11", // "1 toro", // "1 unagi", // "0 14 4 maguroakami hotatekai unagi maguroakami", // "1 saamonnmottu", // "1 unagi", // "1 unagi", // "1 maguro", // "1 kouika", // "1 maguroakami", // "1 maguroakami", // "2 14", // ].join("\n") // ); // release main(readFileSync("/dev/stdin", "utf8"));