結果
| 問題 | No.1375 Divide and Update |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2021-07-24 15:52:47 |
| 言語 | Kotlin (2.1.0) |
| 結果 |
AC
|
| 実行時間 | 851 ms / 2,000 ms |
| コード長 | 955 bytes |
| 記録 | |
| コンパイル時間 | 16,047 ms |
| コンパイル使用メモリ | 447,056 KB |
| 実行使用メモリ | 108,256 KB |
| 最終ジャッジ日時 | 2024-07-19 21:21:30 |
| 合計ジャッジ時間 | 29,730 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 19 |
ソースコード
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"))
}