結果
問題 | No.205 マージして辞書順最小 |
ユーザー | dsxs |
提出日時 | 2018-09-28 17:35:55 |
言語 | JavaScript (node v21.7.1) |
結果 |
AC
|
実行時間 | 1,364 ms / 5,000 ms |
コード長 | 1,391 bytes |
コンパイル時間 | 32 ms |
コンパイル使用メモリ | 6,692 KB |
実行使用メモリ | 54,948 KB |
最終ジャッジ日時 | 2024-10-13 00:43:14 |
合計ジャッジ時間 | 5,652 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 59 ms
39,552 KB |
testcase_01 | AC | 55 ms
39,296 KB |
testcase_02 | AC | 89 ms
45,056 KB |
testcase_03 | AC | 119 ms
45,312 KB |
testcase_04 | AC | 95 ms
45,184 KB |
testcase_05 | AC | 103 ms
45,184 KB |
testcase_06 | AC | 57 ms
39,296 KB |
testcase_07 | AC | 219 ms
46,908 KB |
testcase_08 | AC | 123 ms
45,184 KB |
testcase_09 | AC | 176 ms
46,584 KB |
testcase_10 | AC | 1,364 ms
54,948 KB |
testcase_11 | AC | 1,001 ms
54,476 KB |
testcase_12 | AC | 757 ms
53,360 KB |
testcase_13 | AC | 428 ms
49,472 KB |
testcase_14 | AC | 66 ms
40,064 KB |
testcase_15 | AC | 55 ms
39,296 KB |
testcase_16 | AC | 56 ms
39,168 KB |
testcase_17 | AC | 55 ms
39,168 KB |
testcase_18 | AC | 54 ms
39,040 KB |
ソースコード
function Main(input) { var data = input.split("\n").filter(s => s.length > 0) var n = data.shift() * 1 let r = '' function findMinIdx(input){ // console.log(input) const codes = input.map(s=>s.slice(0, 1)).map(s=>[].reduce.call(s, (sum ,c)=> sum += c.charCodeAt(0), 0)) const minCode = Math.min(...codes) const minIdxes = codes.map((c, i) => [c, i]).filter(a => a[0] == minCode).map(a => a[1]) if (minIdxes.length == 1) { return minIdxes.pop() } let next = input.filter((s, i) => s.charCodeAt(0) == minCode && s.length == 1) let nextInputIndex = [] if (nextInputIndex.length > 0){ return nextInputIndex.pop() } let nextInput = input.filter((s, i) => { let isNext = s.charCodeAt(0) == minCode if (isNext && s.length > 1){ nextInputIndex.push(i) } return isNext }).map(s => s.slice(1)).filter(s => s.length > 0) if (nextInput.length < 1) { return minIdxes.pop() } // console.log(nextInput) return nextInputIndex[findMinIdx(nextInput)] } var input = data while (input.length > 0) { const minIdx = findMinIdx(input) const str = input[minIdx] r += str[0] input[minIdx] = str.slice(1) input = input.filter(s => s.length > 0) } console.log(r) } // Don't edit this line! Main(require("fs").readFileSync("/dev/stdin", "utf8"));