Atcoder Tenka1 Programmer Beginner Contest C: Align
内容
考えたこと
- 解説にもある通り、ギザギザな感じにすると良い。
- a<b<cの時、score(a,b,c)<score(a,c,b)になる。(昇順・降順<ギザギザ)
- 考えられるのは、以下の4通り。
ポイント
- 端っこの数以外は、2回、結果の式に出てくる。
- 端っこの数は、1回、結果の式に出てくる。
- 端っこの数 の選び方がポイント。
実装
N = int(input()) L = [int(input()) for _ in range(N)] if N % 2 == 1: L = sorted(L, reverse=True) minority = N//2 majority = N - minority A = sum(L[:minority])*2 - sum(L[minority:])*2+sum(L[minority:minority+2]) B = sum(L[:majority])*2 - sum(L[majority:])*2 - sum(L[majority-2:majority]) ans = max(A, B) else: L = sorted(L) C = sum(L[:N//2])*2 - sum(L[N//2:])*2 + L[N//2]-L[N//2-1] D = -C ans = max(C, D) print(ans)
終わりに
- このご時世、家で作業することが多くなってきたので、いいキーボードが欲しいんですが、 なかなか手が出せないですね。
- 臨時収入でもあれば買いたいです。