結果
問題 |
No.4 おもりと天秤
|
ユーザー |
|
提出日時 | 2019-04-06 21:51:40 |
言語 | Kotlin (2.1.0) |
結果 |
AC
|
実行時間 | 1,999 ms / 5,000 ms |
コード長 | 991 bytes |
コンパイル時間 | 11,114 ms |
コンパイル使用メモリ | 434,480 KB |
実行使用メモリ | 103,912 KB |
最終ジャッジ日時 | 2024-11-20 17:49:06 |
合計ジャッジ時間 | 21,539 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 23 |
ソースコード
package yukicoder fun main() { val n: Int = readLine()!!.toInt() val w: List<Int> = readLine()!!.split(" ").map(String::toInt) val sum: Int = w.sum() if (sum % 2 != 0) { println("impossible") return } val halfW = sum / 2 var cache: MutableMap<Pair<Int, Int>, Boolean> = mutableMapOf() fun search(index: Int, sum: Int): Boolean { val currentSum = sum + w[index] return when { currentSum > halfW -> false currentSum == halfW -> true else -> { for (i in index + 1 until n) { val key = Pair(i, currentSum) val value = { search(i, currentSum) } if (cache.getOrPut(key, value)) { return true } } false } } } when (search(0, 0)) { true -> println("possible") false -> println("impossible") } }