結果

問題 No.59 鉄道の旅
コンテスト
ユーザー バカらっく
提出日時 2019-09-22 09:35:53
言語 Kotlin
(2.3.20)
コンパイル:
kotlinc _filename_ -include-runtime -d main.jar
実行:
kotlin main.jar
結果
TLE  
実行時間 -
コード長 1,554 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 10,146 ms
コンパイル使用メモリ 482,564 KB
実行使用メモリ 53,008 KB
最終ジャッジ日時 2026-04-07 08:31:56
合計ジャッジ時間 18,814 ms
ジャッジサーバーID
(参考情報)
judge2_0 / judge3_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other TLE * 1 -- * 11
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

fun main(arr:Array<String>) {
    val(station, limit) = readLine()!!.trim().split(" ").map { it.toInt() }
    val log = (1..station).map { readLine()!!.trim().toInt() }
    val block = 1000
    val count = mutableMapOf<Int, Int>()
    val count1000 = mutableMapOf<Int, Int>()
    for(i in log) {
        if(i >= 0) {
            val key1000 = i / block
            var cnt = count1000.filter { it.key > key1000 }.map { it.value }.sum()
            if(cnt >= limit) {
                continue
            }
            cnt += count.filter { it.key>=i && it.key < (key1000+1)*block }.map { it.value }.sum()
            if(cnt >= limit) {
                continue
            }
            count[i]?.also {
                count[i] = it + 1
            }?: run {
                count[i] = 1
            }
            count1000[key1000]?.also {
                count1000[key1000] = it + 1
            } ?: run {
                count1000[key1000] = 1
            }
        } else {
            val key = i * -1
            count[key]?.let { a ->
                if(a <= 1) {
                    count.remove(key)
                } else {
                    count[key] = a - 1
                }
                val key1000 = key / block
                count1000[key1000]?.let {
                    if(it <= 1) {
                        count1000.remove(key1000)
                    } else {
                        count1000[key1000] = it -1
                    }
                }
            }
        }
    }
    println(count.map { it.value }.sum())
}
0