結果
| 問題 |
No.3016 ハチマキおじさん
|
| コンテスト | |
| ユーザー |
norioc
|
| 提出日時 | 2025-02-04 05:17:14 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 311 ms / 2,000 ms |
| コード長 | 841 bytes |
| コンパイル時間 | 676 ms |
| コンパイル使用メモリ | 82,592 KB |
| 実行使用メモリ | 169,576 KB |
| 最終ジャッジ日時 | 2025-02-04 05:17:27 |
| 合計ジャッジ時間 | 10,676 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 31 |
ソースコード
from itertools import accumulate
def cumsum(seq, reverse=False) -> list:
if reverse:
res = cumsum(reversed(seq))
res.reverse()
return res
return list(accumulate(seq))
INF = 1 << 60
N = int(input())
A = list(map(int, input().split()))
B = list(map(int, input().split()))
A.sort()
B.sort()
lefts = []
for a, b in zip(A, B):
lefts.append(abs(a - b))
rights = []
for a, b in zip(A[1:], B):
rights.append(abs(a - b))
lacc = cumsum(lefts)
racc = [0] + cumsum(rights, reverse=True)
min_d = INF # 不満度
s = set()
for i in range(N):
# i 番目のハチマキを残したときの不満度
x = lacc[i-1] if i > 0 else 0
y = racc[i+1] if i+1 < N else 0
d = x + y
if min_d > d:
min_d = d
s.clear()
if min_d == d:
s.add(A[i])
print(len(s))
print(*s)
norioc