結果

問題 No.8 N言っちゃダメゲーム
ユーザー バカらっくバカらっく
提出日時 2019-08-30 01:26:22
言語 Kotlin
(1.9.23)
結果
TLE  
実行時間 -
コード長 753 bytes
コンパイル時間 12,959 ms
コンパイル使用メモリ 438,204 KB
実行使用メモリ 149,208 KB
最終ジャッジ日時 2024-11-20 19:31:05
合計ジャッジ時間 51,752 ms
ジャッジサーバーID
(参考情報)
judge2 / judge1
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 335 ms
55,160 KB
testcase_01 AC 326 ms
87,132 KB
testcase_02 AC 327 ms
149,208 KB
testcase_03 TLE -
testcase_04 RE -
testcase_05 AC 345 ms
57,120 KB
testcase_06 TLE -
testcase_07 TLE -
testcase_08 TLE -
testcase_09 TLE -
testcase_10 TLE -
権限があれば一括ダウンロードができます
コンパイルメッセージ
Main.kt:1:10: warning: parameter 'args' is never used
fun main(args: Array<String>){
         ^

ソースコード

diff #

fun main(args: Array<String>){
    val gameCount = readLine()!!.toInt()
    for (i in 1..gameCount) {
        val (n,k) = readLine()!!.split(" ").map { it.toInt() }
        canWin(n,k)
    }
}

fun canWin(n:Int, k:Int) {
    dic.clear()
    val ans = if (canWinSub(0, n, k)) "Win" else "Lose"
    println(ans)
}

val dic = mutableMapOf<Int, Boolean>()
fun canWinSub(num:Int, n:Int, k:Int):Boolean {
    if(num+1>=n) {
        return false
    }
    dic[num]?.let { return it }

    var canWin = false
    for(i in Math.min(k, n - num - 1) downTo 1 step 1) {
        if(i+num >= n) {
            break
        }
        if(!canWinSub(num+i, n, k)) {
            canWin = true
            break
        }
    }
    dic[num] = canWin
    return canWin
}


0