結果
| 問題 | No.1391 ±1 Abs Sum |
| コンテスト | |
| ユーザー |
lam6er
|
| 提出日時 | 2025-03-31 18:02:01 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,138 bytes |
| コンパイル時間 | 257 ms |
| コンパイル使用メモリ | 82,588 KB |
| 実行使用メモリ | 106,392 KB |
| 最終ジャッジ日時 | 2025-03-31 18:02:34 |
| 合計ジャッジ時間 | 5,130 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 14 WA * 20 |
ソースコード
n, k = map(int, input().split())
a = list(map(int, input().split()))
a.sort()
prefix = [0] * (n + 1)
for i in range(n):
prefix[i + 1] = prefix[i] + a[i]
if k == 0:
sum_all = prefix[n] - prefix[0]
sum_left = sum_all - a[0] * n
sum_right = a[-1] * n - sum_all
ans = -max(sum_left, sum_right)
elif k == n:
if n % 2 == 1:
mid = n // 2
x = a[mid]
sum_median = sum(abs(num - x) for num in a)
ans = sum_median
else:
mid1 = (n // 2) - 1
mid2 = n // 2
x1 = a[mid1]
x2 = a[mid2]
sum1 = sum(abs(num - x1) for num in a)
sum2 = sum(abs(num - x2) for num in a)
ans = min(sum1, sum2)
else:
# Left case: first K elements
sum_S_left = (prefix[k] - prefix[0]) - a[0] * k
sum_non_S_left = (prefix[n] - prefix[k]) - a[0] * (n - k)
left_val = sum_S_left - sum_non_S_left
# Right case: last K elements
sum_S_right = a[-1] * k - (prefix[n] - prefix[n - k])
sum_non_S_right = a[-1] * (n - k) - (prefix[n - k] - prefix[0])
right_val = sum_S_right - sum_non_S_right
ans = min(left_val, right_val)
print(ans)
lam6er