結果

問題 No.78 クジ付きアイスバー
ユーザー javy
提出日時 2015-11-28 09:43:27
言語 Kotlin
(2.1.0)
結果
AC  
実行時間 302 ms / 5,000 ms
コード長 1,992 bytes
コンパイル時間 12,025 ms
コンパイル使用メモリ 442,472 KB
実行使用メモリ 57,028 KB
最終ジャッジ日時 2024-11-20 06:17:42
合計ジャッジ時間 25,288 ms
ジャッジサーバーID
(参考情報)
judge1 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 35
権限があれば一括ダウンロードができます
コンパイルメッセージ
Main.kt:6:10: warning: parameter 'args' is never used
fun main(args: Array<String>) {
         ^

ソースコード

diff #

package Yukicoder

/**
 * Created by hichikawa on 2015/11/12.
 */
fun main(args: Array<String>) {
    fun readLineLongArray(): List<Long> {
        val str = readLine() as String
        val arrStr = str.split(" ")
        val ret = arrStr.map { it.toLong() }
        return ret
    }

    fun readLineLong(): Long {
        val str = readLine() as String
        return str.toLong()
    }

    fun readLineInt(): Int {
        val str = readLine() as String
        return str.toInt()
    }

    fun readLineIntArray() : List<Int> {
        val str = readLine() as String
        val arrStr = str.split(" ")
        val ret = arrStr.map { it.toInt() }
        return ret
    }

    fun readLineDoubleArray(): List<Double> {
        val str = readLine() as String
        val arrStr = str.split(" ")
        val ret = arrStr.map { it.toDouble() }
        return ret
    }

    fun readLineDouble() : Double {
        val str = readLine() as String
        return str.toDouble()
    }
    val input = readLineIntArray()
    val num = input[0]
    val iceArray = (readLine() as String).toCharArray().map { it.toString().toInt() }
    var sum = 0
    for (item in iceArray) {
        sum += item
    }
    sum -= num
    var needIce = input[1]
    var buyIce = 0
    var moreIce = 0
    for (i in 0..Int.MAX_VALUE) {
        if (moreIce == 0) {
            buyIce++
        } else {
            moreIce--
        }
        moreIce += iceArray[i%num]
        needIce--
        if (needIce <= 0)
            break
        if (i >= num) {
            if (sum >= 0) {
                break
            } else {
                if (((needIce / num) - 2) > 0) {
//                    println(((needIce / num) - 2))
                    buyIce += ((needIce / num) - 2) * (-sum)
                    needIce -= ((needIce / num) - 2) * num
                }
            }
        }
//        println("\t" + needIce)
        if (needIce <= 0)
            break
    }
    println(buyIce)
//    println(sum)
}
0