結果
問題 | No.1391 ±1 Abs Sum |
ユーザー |
![]() |
提出日時 | 2025-06-12 21:14:37 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,325 bytes |
コンパイル時間 | 375 ms |
コンパイル使用メモリ | 81,920 KB |
実行使用メモリ | 121,728 KB |
最終ジャッジ日時 | 2025-06-12 21:16:14 |
合計ジャッジ時間 | 5,382 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
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()