結果
問題 | No.2248 max(C)-min(C) |
ユーザー |
![]() |
提出日時 | 2023-03-17 21:55:22 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 1,507 ms / 3,000 ms |
コード長 | 699 bytes |
コンパイル時間 | 163 ms |
コンパイル使用メモリ | 82,516 KB |
実行使用メモリ | 166,480 KB |
最終ジャッジ日時 | 2024-09-18 10:48:10 |
合計ジャッジ時間 | 36,373 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 51 |
ソースコード
import sys input = sys.stdin.readline N = int(input()) A = list(map(int, input().split())) B = list(map(int, input().split())) events = [] for i in range(N): events.append((A[i], i)) events.append((B[i], i)) events.append(((A[i]+B[i])//2, i)) events.sort(key=lambda p: p[0]) cnt = [0] * N st = set() j = 0 ans = 10**18 for i in range(len(events)): l = events[i][0] while j < len(events) and len(st) < N: r, k = events[j] if cnt[k] == 0: st.add(k) cnt[k] += 1 j += 1 if len(st) == N: r = events[j-1][0] ans = min(ans, r - l) _, k = events[i] cnt[k] -= 1 if cnt[k] == 0: st.remove(k) print(ans)