結果

問題 No.873 バイナリ、ヤバいなり!w
ユーザー yukikurage_2019
提出日時 2019-09-12 15:15:56
言語 Kotlin
(2.1.0)
結果
TLE  
実行時間 -
コード長 1,161 bytes
コンパイル時間 13,719 ms
コンパイル使用メモリ 446,404 KB
実行使用メモリ 49,496 KB
最終ジャッジ日時 2024-07-02 17:07:21
合計ジャッジ時間 21,204 ms
ジャッジサーバーID
(参考情報)
judge2 / judge5
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample -- * 3
other TLE * 1 -- * 35
権限があれば一括ダウンロードができます

ソースコード

diff #

fun main() {
    val n = readLine()!!.toInt()
    val sqrtn = Math.sqrt(n.toDouble()).toInt()
    val dp = Array(sqrtn){Array(n+1){it}}
    val memo = Array(sqrtn){Array(n+1){it}}
    for(i in 1 until sqrtn)for(j in 0 until n+1){
        dp[i][j] = 100000//inf
        var count = 0
        for(k in j downTo 0 step (i+1)*(i+1)){
            if(dp[i-1][k]+i*count<dp[i][j]){
                dp[i][j] = dp[i-1][k]+i*count
                memo[i][j] = count
            }
            count++
        }
    }
    val ansList = mutableListOf<Int>()
    var l = n
    for(i in sqrtn - 1 downTo 0){
        for(j in 0 until memo[i][l]){
            ansList += i+1
            l-=(i+1)*(i+1)
        }
    }
    var ans = ansList.filter{it%2==1}.asReversed().toMutableList()
    val even = ansList.filter{it%2==0}
    ans = ans.plus(Array(even.count()){
        if(it%2==0)even[it/2]
        else even[even.count()-(it+1)/2]
    }).toMutableList()
    println(ans)
    var suf = 0
    for(i in ans){
        for(j in 0 until i){
            print(suf)
            suf=rev(suf)
        }
        suf=rev(suf)
    }
    println("")
}
fun rev(suf:Int)=if(suf==0)1 else 0
0