結果

問題 No.1375 Divide and Update
ユーザー face4face4
提出日時 2021-07-24 15:52:47
言語 Kotlin
(1.9.23)
結果
AC  
実行時間 1,092 ms / 2,000 ms
コード長 955 bytes
コンパイル時間 17,430 ms
コンパイル使用メモリ 421,216 KB
実行使用メモリ 97,432 KB
最終ジャッジ日時 2023-09-27 03:58:31
合計ジャッジ時間 36,157 ms
ジャッジサーバーID
(参考情報)
judge15 / judge14
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 299 ms
52,808 KB
testcase_01 AC 302 ms
52,832 KB
testcase_02 AC 299 ms
52,972 KB
testcase_03 AC 299 ms
52,804 KB
testcase_04 AC 306 ms
52,832 KB
testcase_05 AC 302 ms
52,772 KB
testcase_06 AC 301 ms
53,024 KB
testcase_07 AC 295 ms
52,728 KB
testcase_08 AC 298 ms
52,832 KB
testcase_09 AC 296 ms
54,720 KB
testcase_10 AC 1,054 ms
93,100 KB
testcase_11 AC 1,015 ms
93,936 KB
testcase_12 AC 747 ms
74,960 KB
testcase_13 AC 712 ms
68,488 KB
testcase_14 AC 1,088 ms
97,432 KB
testcase_15 AC 1,079 ms
96,324 KB
testcase_16 AC 1,050 ms
96,024 KB
testcase_17 AC 1,090 ms
96,468 KB
testcase_18 AC 1,082 ms
93,788 KB
testcase_19 AC 1,092 ms
93,876 KB
testcase_20 AC 955 ms
85,108 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

import kotlin.math.max
import kotlin.math.min

fun main() {
    val (n, x, y) = readLine()!!.split(" ").map { it.toInt() }
    var a = readLine()!!.split(" ").map { it.toLong() }
    var sum = a.toMutableList()
    for (i in 1 until n) {
        sum[i] += sum[i - 1]
    }
    val ans = a.toMutableList()
    var diff = a.map { x - it }
    var mi = 0L
    var acc = 0L
    var ma = -2000000000L
    for (i in 1 until n - 1) {
        acc += diff[i - 1]
        ma = max(ma, acc - mi)
        ans[i] += sum[i - 1] + ma
        mi = min(mi, acc)
    }
    a = a.reversed()
    sum = a.toMutableList()
    for (i in 1 until n) {
        sum[i] += sum[i - 1]
    }
    diff = a.map { y - it }
    mi = 0L
    acc = 0L
    ma = -2000000000L
    for (i in 1 until n - 1) {
        acc += diff[i - 1]
        ma = max(ma, acc - mi)
        ans[n - 1 - i] += sum[i - 1] + ma
        mi = min(mi, acc)
    }
    println(ans.subList(1, n - 1).joinToString("\n"))
}
0