結果

問題 No.20 砂漠のオアシス
ユーザー バカらっくバカらっく
提出日時 2019-09-01 21:06:10
言語 Kotlin
(1.9.23)
結果
WA  
実行時間 -
コード長 1,957 bytes
コンパイル時間 17,275 ms
コンパイル使用メモリ 451,696 KB
実行使用メモリ 301,780 KB
最終ジャッジ日時 2024-11-29 13:35:34
合計ジャッジ時間 51,069 ms
ジャッジサーバーID
(参考情報)
judge1 / judge2
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 320 ms
54,964 KB
testcase_01 AC 331 ms
87,960 KB
testcase_02 AC 334 ms
240,228 KB
testcase_03 AC 413 ms
69,772 KB
testcase_04 AC 511 ms
119,220 KB
testcase_05 WA -
testcase_06 TLE -
testcase_07 TLE -
testcase_08 TLE -
testcase_09 TLE -
testcase_10 AC 321 ms
56,884 KB
testcase_11 WA -
testcase_12 AC 463 ms
87,340 KB
testcase_13 AC 474 ms
87,208 KB
testcase_14 WA -
testcase_15 WA -
testcase_16 WA -
testcase_17 AC 599 ms
89,288 KB
testcase_18 WA -
testcase_19 AC 782 ms
91,572 KB
testcase_20 WA -
権限があれば一括ダウンロードができます
コンパイルメッセージ
Main.kt:3:10: warning: parameter 'args' is never used
fun main(args: Array<String>) {
         ^

ソースコード

diff #

import java.util.*

fun main(args: Array<String>) {
    val (n,v,ox, oy) = readLine()!!.split(" ").map { it.toInt() }
    for(i in 1..n) {
        map.add(readLine()!!.split(" ").map { it.toInt() })
        zeroZeroStart.add(MutableList(n, {500000}))
        oasisStart.add(MutableList(n, {500000}))
    }

    buildMap(zeroZeroStart, 0, 0)
    if(ox > 0 && oy > 0) {
        hasOasis = true
        buildMap(oasisStart, ox - 1, oy - 1)
    }
    val ans = if (canGoal(v, ox, oy)) "YES" else "NO"
    println(ans)
}

fun canGoal(vital: Int, oX:Int, oY:Int):Boolean {
    var subVital = vital
    if(zeroZeroStart.last().last() < subVital) {
        return true
    }
    if(!hasOasis) {
        return false
    }
    if(zeroZeroStart[oY][oX] >= subVital) {
        return false
    }
    subVital = (subVital - zeroZeroStart[oY][oX])
    subVital = (subVital * 2)
    return subVital > zeroZeroStart.last().last()
}

var hasOasis = false;
val map = mutableListOf<List<Int>>()
val zeroZeroStart = mutableListOf<MutableList<Int>>()
val oasisStart = mutableListOf<MutableList<Int>>()

class  Task(val x:Int, val y:Int, val step:Int)
fun buildMap(target:MutableList<MutableList<Int>>, startX:Int, startY:Int) {
    val queue = LinkedList<Task>()
    queue.add(Task(startX, startY, 0))
    while (queue.isNotEmpty()) {
        val task = queue.pop()
        if(target[task.y][task.x] <= task.step) {
            continue
        }
        target[task.y][task.x] = task.step
        for(i in Math.max(0, task.y-1)..Math.min(target.lastIndex, task.y+1)) {
            for(j in Math.max(0, task.x-1)..Math.min(target.lastIndex, task.x + 1)) {
                if(i == task.y && j == task.x) {
                    continue
                }
                if(i!=task.y && j!=task.x) {
                    continue
                }
                val nextStep = task.step + map[i][j]
                queue.add(Task(j, i, nextStep))
            }
        }
    }

}
0