日期:2025年1月31日
ZeroJudge 題目連結:e796. p3. 站牌廣告
解題想法
因為測資範圍不太,在找人流最大值、最小值的站牌編號用線性搜尋,從頭到尾掃過一次即可,效率並不差。
Python 程式碼
使用時間約為 69 ms,記憶體約為 3.3 MB,通過測試。
B = int(input()) # 站牌數量,站牌編號 1 ~ B
P = int(input()) # 人數
cnt = [0]*(B+1) # 各站牌人流,左端加上一格
for _ in range(P): # 讀取 P 行資料
u, v = map(int, input().split()) # 上車、下車站牌編號
if u > v: u, v = v, u # 如果 u 大於 v,兩者交換
for i in range(u, v+1): cnt[i] += 1 # 更新 [u, v] 之間的人流
imax, imin = 0, P+1 # 人流最大值、最小值
pmax, pmin = 0, 0 # 人流最大值、最小值的站牌編號
for i in range(1, B+1): # 依序檢查站牌 1 ~ B
if cnt[i] >= imax: # 如果 cnt[i] 大於等於 imax
imax = cnt[i] # 更新 imax
pmax = i # 更新 pmax
if cnt[i] < imin: # 如果 cnt[i] 小於 imin
imin = cnt[i] # 更新 imin
pmin = i # 更新 pmin
print(f"{pmin:d} {pmax:d}") # 印出答案