結果
問題 | No.972 選び方のスコア |
ユーザー |
|
提出日時 | 2024-10-15 01:40:31 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 264 ms / 2,000 ms |
コード長 | 825 bytes |
コンパイル時間 | 519 ms |
コンパイル使用メモリ | 82,304 KB |
実行使用メモリ | 121,984 KB |
最終ジャッジ日時 | 2024-10-15 01:40:39 |
合計ジャッジ時間 | 8,080 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 32 |
ソースコード
N = int(input())A = list(map(int, input().split()))A.sort()S = [0]for a in A:S.append(S[-1] + a)def better(i, n):p = A[-n] - A[i]m = A[i] - A[i-n]return p > mdef calc_score(i):ai = A[i]nl = inr = N - i - 1n = min(nl, nr)left = 1right = nif better(i, right):h = S[N] - S[N-n]l = S[i] - S[i-n]score = h + l - ai*n*2return scoreif not better(i, 1):return A[-1] + A[i-1] - 2*A[i]while right-left > 1:mid = (right + left) // 2if better(i, mid):left = midelse:right = midh = S[N] - S[N-left]l = S[i] - S[i-left]score = h + l - ai*left*2return scoreans = 0for i in range(N):ans = max(ans, calc_score(i))print(ans)