結果

問題 No.19 ステージの選択
ユーザー バカらっくバカらっく
提出日時 2019-09-01 15:10:22
言語 Kotlin
(1.9.23)
結果
WA  
実行時間 -
コード長 1,238 bytes
コンパイル時間 16,235 ms
コンパイル使用メモリ 427,192 KB
実行使用メモリ 55,060 KB
最終ジャッジ日時 2023-08-18 18:53:25
合計ジャッジ時間 22,587 ms
ジャッジサーバーID
(参考情報)
judge11 / judge13
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 275 ms
53,160 KB
testcase_01 AC 275 ms
53,456 KB
testcase_02 AC 276 ms
53,216 KB
testcase_03 AC 284 ms
53,120 KB
testcase_04 WA -
testcase_05 WA -
testcase_06 WA -
testcase_07 WA -
testcase_08 WA -
testcase_09 WA -
testcase_10 WA -
testcase_11 AC 275 ms
53,148 KB
testcase_12 AC 270 ms
53,040 KB
testcase_13 AC 270 ms
53,064 KB
testcase_14 WA -
testcase_15 AC 272 ms
55,060 KB
testcase_16 AC 282 ms
53,260 KB
testcase_17 AC 271 ms
53,212 KB
testcase_18 WA -
testcase_19 WA -
testcase_20 AC 281 ms
53,208 KB
testcase_21 WA -
testcase_22 AC 280 ms
53,220 KB
testcase_23 AC 287 ms
53,264 KB
権限があれば一括ダウンロードができます
コンパイルメッセージ
Main.kt:2:10: warning: parameter 'args' is never used
fun main(args: Array<String>) {
         ^
Main.kt:21:51: warning: unnecessary non-null assertion (!!) on a non-null receiver of type Map.Entry<Int, TreeNode>
        val cur = sublist.minBy { it.value.value }!!.value
                                                  ^

ソースコード

diff #

fun main(args: Array<String>) {
    val stageCount = readLine()!!.toInt()
    (1..stageCount).forEach {
        stageList[it] = TreeNode(it)
    }
    (1..stageCount).forEach {
        val (l, s) = readLine()!!.split(" ").map { it.toInt() }
        stageList[it]!!.value = l * 10
        if(it != s) {
            stageList[it]!!.parent = stageList[s]!!
            stageList[s]!!.items.add(stageList[it]!!)
        }
    }
    var ans = 0
    (1..stageCount).forEach {
        var sublist = stageList.filter {  it.value.parent == null && !it.value.clearFlag }
        if(sublist.isEmpty()) {
            sublist = stageList.filter { !it.value.clearFlag }
        }
        val cur = sublist.minBy { it.value.value }!!.value
        ans += cur.value
        cur.clearFlag = true
        cur.parent?.let {
            it.items.remove(cur)
        }
        cur.parent = null
        cur.items.forEach{
            it.value = it.value / 2
            it.parent = null
        }
        cur.items.clear()
    }
    println(ans.toDouble()/10)
}

val stageList = mutableMapOf<Int, TreeNode>()

class TreeNode(val id:Int) {
    var parent:TreeNode? = null
    var clearFlag = false
    var items = mutableListOf<TreeNode>()
    var value = 0
}
0