結果

問題 No.152 貯金箱の消失
コンテスト
ユーザー バカらっく
提出日時 2019-11-05 01:37:39
言語 Kotlin
(2.3.20)
コンパイル:
kotlinc _filename_ -include-runtime -d main.jar
実行:
kotlin main.jar
結果
TLE  
実行時間 -
コード長 1,286 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 10,123 ms
コンパイル使用メモリ 474,480 KB
実行使用メモリ 125,104 KB
最終ジャッジ日時 2026-04-04 15:54:15
合計ジャッジ時間 23,511 ms
ジャッジサーバーID
(参考情報)
judge5_1 / judge2_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 4 TLE * 2 -- * 6
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code


fun main(arr:Array<String>) {
    val dic = mutableMapOf<Int, Int>()
    val himo = readLine()!!.toInt()
    for (i in (1..himo)) {
        if(i*2*4>himo) {
            break
        }
        dic[i*i] = i
    }
    var ans = 0
    val flag = mutableMapOf<Int, MutableMap<Int, Boolean>>()
    for(i in dic.keys) {
        for(j in dic.keys.filter { it < i }.sortedDescending()) {
            val key = i - j
            if(key > j) {
                break
            }
            if(!dic.containsKey(key)) {
                continue
            }
            if(flag.containsKey(dic[i]!!) && flag[dic[i]!!]!!.containsKey(dic[j]!!)) {
                continue
            }
            val requireHimo = (dic[i]!! + dic[j]!! + dic[key]!!) * 4
            if(requireHimo > himo) {
                continue
            }
            ans++
            for (k in (1..himo)) {
                val keyI = dic[i]!!*k
                val keyJ = dic[j]!!*k
                val keyKey = dic[key]!!*k
                if(!flag.containsKey(keyI)) {
                    flag[keyI] = mutableMapOf()
                }
                if(requireHimo * k > himo) {
                    break
                }
                flag[keyI]!![keyJ] = true
            }
        }
    }
    println(ans)
}

0