結果
| 問題 |
No.91 赤、緑、青の石
|
| コンテスト | |
| ユーザー |
バカらっく
|
| 提出日時 | 2019-09-28 04:52:16 |
| 言語 | Kotlin (2.1.0) |
| 結果 |
AC
|
| 実行時間 | 320 ms / 5,000 ms |
| コード長 | 1,147 bytes |
| コンパイル時間 | 12,764 ms |
| コンパイル使用メモリ | 449,768 KB |
| 実行使用メモリ | 60,308 KB |
| 最終ジャッジ日時 | 2024-06-24 07:21:57 |
| 合計ジャッジ時間 | 24,042 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 28 |
コンパイルメッセージ
Main.kt:4:10: warning: parameter 'arr' is never used
fun main(arr:Array<String>) {
^
ソースコード
import kotlin.math.PI
fun main(arr:Array<String>) {
rgb = readLine()!!.split(" ").map { it.toInt() }.sorted()
val ans = getAns(rgb[0], rgb[2])
println(ans)
}
var rgb = listOf<Int>()
fun getAns(min:Int, max:Int):Int {
if(max-min <= 1) {
if(canCreate(max)) {
return max
}
return min
}
val mid = (max+min)/2
return if(canCreate(mid)) {
getAns(mid, max)
} else {
getAns(min, mid)
}
}
fun canCreate(count:Int):Boolean {
if(count*3 > rgb.sum()) {
return false
}
if(count <= rgb[0]) {
return true
}
val diff = rgb.map { it - count }.toMutableList()
if(diff[0] < 0) {
val move = Math.min(diff[0] * -1, diff[2] / 2)
diff[0] += move
diff[2] -= move*2
if(diff[0] < 0 && diff[1] > 0) {
val move2 = Math.min(diff[0] * -1, diff[1] / 2)
diff[0] += move2
diff[1] -= move2 * 2
}
}
if(diff[1] < 0) {
val move = Math.min(diff[1] * -1, diff[2] / 2)
diff[1] += move
diff[2] -= move * 2
}
return diff.all { it >= 0 }
}
バカらっく