結果
問題 |
No.972 選び方のスコア
|
ユーザー |
![]() |
提出日時 | 2025-06-12 18:35:21 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 898 bytes |
コンパイル時間 | 184 ms |
コンパイル使用メモリ | 82,132 KB |
実行使用メモリ | 113,472 KB |
最終ジャッジ日時 | 2025-06-12 18:35:50 |
合計ジャッジ時間 | 6,219 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 25 WA * 7 |
ソースコード
n = int(input()) a = list(map(int, input().split())) a.sort() # Prefix sum for elements less than a[i] (sorted) sum_less_prefix = [0] * (n + 1) for i in range(n): sum_less_prefix[i+1] = sum_less_prefix[i] + a[i] # Reverse the array for prefix sum of greater elements (sorted in descending order) rev_a = a[::-1] sum_greater_prefix = [0] * (n + 1) for i in range(n): sum_greater_prefix[i+1] = sum_greater_prefix[i] + rev_a[i] max_score = 0 # At least one element is selected, which gives score 0 for i in range(n): # Number of elements less than a[i] is i, greater is (n-1 - i) t_max = min(i, (n - 1) - i) if t_max == 0: current = 0 else: sum_less = sum_less_prefix[t_max] sum_greater = sum_greater_prefix[t_max] current = sum_less + sum_greater - 2 * t_max * a[i] if current > max_score: max_score = current print(max_score)