結果

問題 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
権限があれば一括ダウンロードができます

ソースコード

diff #

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)
0