結果
問題 | No.3016 ハチマキおじさん |
ユーザー |
![]() |
提出日時 | 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)