結果
問題 |
No.1391 ±1 Abs Sum
|
ユーザー |
![]() |
提出日時 | 2025-06-12 13:22:12 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,269 bytes |
コンパイル時間 | 168 ms |
コンパイル使用メモリ | 82,340 KB |
実行使用メモリ | 106,392 KB |
最終ジャッジ日時 | 2025-06-12 13:24:56 |
合計ジャッジ時間 | 4,442 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 14 WA * 20 |
ソースコード
n, k = map(int, input().split()) a = list(map(int, input().split())) prefix = [0] * (n + 1) for i in range(n): prefix[i+1] = prefix[i] + a[i] if k == 0: sum_left = (prefix[n] - prefix[0]) - n * a[0] sum_right = a[-1] * n - (prefix[n] - prefix[0]) max_sum = max(sum_left, sum_right) print(-max_sum) elif k == n: if n % 2 == 0: mid = n // 2 - 1 else: mid = n // 2 x = a[mid] left_sum = x * (mid + 1) - prefix[mid + 1] right_sum = (prefix[n] - prefix[mid + 1]) - x * (n - (mid + 1)) total = left_sum + right_sum print(total) else: min_val = float('inf') for i in range(n - k + 1): # Calculate for left end (a[i]) sum_s_left = (prefix[i + k] - prefix[i]) - k * a[i] sum_t_left = (i * a[i] - prefix[i]) + (prefix[n] - prefix[i + k] - (n - i - k) * a[i]) current_left = sum_s_left - sum_t_left # Calculate for right end (a[i + k - 1]) sum_s_right = k * a[i + k - 1] - (prefix[i + k] - prefix[i]) sum_t_right = (i * a[i + k - 1] - prefix[i]) + (prefix[n] - prefix[i + k] - (n - i - k) * a[i + k - 1]) current_right = sum_s_right - sum_t_right min_val = min(min_val, current_left, current_right) print(min_val)