結果
問題 |
No.1391 ±1 Abs Sum
|
ユーザー |
![]() |
提出日時 | 2025-06-12 16:24:40 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,325 bytes |
コンパイル時間 | 155 ms |
コンパイル使用メモリ | 82,172 KB |
実行使用メモリ | 122,200 KB |
最終ジャッジ日時 | 2025-06-12 16:24:49 |
合計ジャッジ時間 | 4,398 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 18 WA * 16 |
ソースコード
def main(): import sys input = sys.stdin.read data = input().split() N = int(data[0]) K = int(data[1]) A = list(map(int, data[2:2+N])) pre_sum = [0] * (N + 1) for i in range(1, N + 1): pre_sum[i] = pre_sum[i - 1] + A[i - 1] min_f = float('inf') for i in range(N): current_A = A[i] if K == 0: sum_k = 0 else: sum_k = 0 if K >= 1: m = min(K - 1, i) n = K - 1 - m if n > (N - 1 - i): n = N - 1 - i m = K - 1 - n sum_left = 0 if m > 0: if i - m >= 0: sum_left = current_A * m - (pre_sum[i] - pre_sum[i - m]) sum_right = 0 if n > 0: if i + n < N: sum_right = (pre_sum[i + n + 1] - pre_sum[i + 1]) - current_A * n sum_k += sum_left + sum_right left_sum = current_A * i - pre_sum[i] right_sum = (pre_sum[N] - pre_sum[i + 1]) - current_A * (N - 1 - i) S = left_sum + right_sum f = 2 * sum_k - S if f < min_f: min_f = f print(min_f) if __name__ == "__main__": main()