Mexican Wave: จำนวนผู้ชมยืนที่เวลา t
มีผู้ชม n คน หมายเลข 1..n กระบวนการ:
- เวลา 1..k: คนที่ i ยืน
- เวลา k+1..n: คนที่ i ยืน, คนที่ i-k นั่ง
- เวลา n+1..n+k: คนที่ i-n+k นั่ง
t
สูตรตรง (O(1))
if t <= k: return t
elif t <= n: return k
else: return k - (t - n)
โค้ดตัวอย่าง Python
def how_many_stand(n, k, t):
if t <= k:
return t
elif t <= n:
return k
else:
return k - (t - n)
print(how_many_stand(11, 6, 4)) # 4