結果

問題 No.19 ステージの選択
ユーザー バカらっくバカらっく
提出日時 2019-09-01 15:10:22
言語 Kotlin
(1.9.23)
結果
WA  
実行時間 -
コード長 1,238 bytes
コンパイル時間 13,625 ms
コンパイル使用メモリ 452,972 KB
実行使用メモリ 52,392 KB
最終ジャッジ日時 2024-05-06 00:36:49
合計ジャッジ時間 22,165 ms
ジャッジサーバーID
(参考情報)
judge4 / judge1
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 271 ms
51,792 KB
testcase_01 AC 273 ms
51,664 KB
testcase_02 AC 276 ms
51,888 KB
testcase_03 AC 278 ms
51,756 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 278 ms
51,908 KB
testcase_12 AC 281 ms
51,896 KB
testcase_13 AC 296 ms
51,788 KB
testcase_14 WA -
testcase_15 AC 287 ms
51,864 KB
testcase_16 AC 289 ms
51,828 KB
testcase_17 AC 299 ms
52,020 KB
testcase_18 WA -
testcase_19 WA -
testcase_20 AC 290 ms
51,908 KB
testcase_21 WA -
testcase_22 AC 289 ms
51,752 KB
testcase_23 AC 280 ms
52,152 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