結果

問題 No.19 ステージの選択
ユーザー バカらっくバカらっく
提出日時 2019-09-01 15:10:22
言語 Kotlin
(1.9.23)
結果
WA  
実行時間 -
コード長 1,238 bytes
コンパイル時間 14,241 ms
コンパイル使用メモリ 441,932 KB
実行使用メモリ 52,300 KB
最終ジャッジ日時 2024-11-28 02:08:06
合計ジャッジ時間 23,142 ms
ジャッジサーバーID
(参考情報)
judge4 / judge3
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 301 ms
51,972 KB
testcase_01 AC 302 ms
52,016 KB
testcase_02 AC 306 ms
51,872 KB
testcase_03 AC 308 ms
51,704 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 277 ms
51,920 KB
testcase_12 AC 279 ms
51,976 KB
testcase_13 AC 279 ms
52,132 KB
testcase_14 WA -
testcase_15 AC 286 ms
51,892 KB
testcase_16 AC 290 ms
52,232 KB
testcase_17 AC 284 ms
51,860 KB
testcase_18 WA -
testcase_19 WA -
testcase_20 AC 319 ms
51,972 KB
testcase_21 WA -
testcase_22 AC 313 ms
52,156 KB
testcase_23 AC 313 ms
52,192 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