結果
| 問題 |
No.5017 Tool-assisted Shooting
|
| ユーザー |
エセ賢者
|
| 提出日時 | 2023-07-16 16:16:57 |
| 言語 | Kotlin (2.1.0) |
| 結果 |
AC
|
| 実行時間 | 444 ms / 2,000 ms |
| コード長 | 2,326 bytes |
| コンパイル時間 | 14,793 ms |
| コンパイル使用メモリ | 433,520 KB |
| 実行使用メモリ | 71,216 KB |
| スコア | 29,736 |
| 平均クエリ数 | 197.50 |
| 最終ジャッジ日時 | 2023-07-16 16:17:57 |
| 合計ジャッジ時間 | 56,470 ms |
|
ジャッジサーバーID (参考情報) |
judge15 / judge14 |
| 純コード判定しない問題か言語 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 100 |
コンパイルメッセージ
Main.kt:10:10: warning: parameter 'args' is never used
fun main(args: Array<String>) {
^
Main.kt:45:51: warning: unnecessary non-null assertion (!!) on a non-null receiver of type Enemy
val near = sameLine.minBy { it.y }!!
^
ソースコード
private fun next() = readLine()!!
private fun nextInt() = next().toInt()
private fun nextLong() = next().toLong()
private fun nextDouble() = next().toDouble()
private fun nextList() = next().split(" ")
private fun nextIntList() = next().split(" ").map { it.toInt() }.toIntArray()
private fun nextLongList() = next().split(" ").map { it.toLong() }.toLongArray()
private fun nextDoubleList() = next().split(" ").map { it.toDouble() }.toDoubleArray()
fun main(args: Array<String>) {
var turn = 0
var enemyList = mutableListOf<Enemy>()
var own = 12
var power = 100
while (turn < 1000) {
val n = nextInt()
if (n == -1) {
return
}
val newEnemyList = mutableListOf<Enemy>()
for (enemy in enemyList) {
val isAlive = enemy.nextTurn()
if (isAlive) {
newEnemyList.add(enemy)
}
}
enemyList = newEnemyList
for (i in 0 until n) {
val hpx = nextIntList()
enemyList.add(Enemy(hpx[2], 59, hpx[0], hpx[1]))
}
if (enemyList.isEmpty()) {
println("S")
} else {
val sameLine = enemyList.filter { it.x == own }
if (sameLine.isEmpty()) {
if (Math.random() < 0.5) {
println("R")
own++
} else {
println("L")
own--
}
} else {
val near = sameLine.minBy { it.y }!!
if (near.h > near.y * (power / 100)) {
if (Math.random() < 0.5) {
println("R")
own++
} else {
println("L")
own--
}
} else {
val isAlive = near.hit(power / 100)
println("S")
if (!isAlive) {
power += near.p
}
}
}
}
turn++
}
}
class Enemy(var x: Int, var y: Int, var h: Int, var p: Int) {
val maxH = h
fun nextTurn(): Boolean {
y--
return y >= 0
}
fun hit(damage: Int): Boolean {
h -= damage
return h >= 0
}
}
エセ賢者