Input: 第一行為一整數 T,代表有 T 組測資,每組測資第一行為三個整數 n, t, m,分別代表 船上能載的車子最大數量、船從一岸到達另一岸所需要的時間、需要過岸的車子數量。接下來 m 行,每行有一個整數及一個字串,整數代表車子到達岸邊的時間,字串只會為 "left" 或 "right" 代表車子到達的那個岸邊。
Output: 按照 Input 時車子的順序輸出車子到達對岸的時間。每組測資中間需以空行隔開。
解題思路
使用兩個 Queue 代表左岸及右岸,存放車子的編號 ( 代表順序 ) 及到達的時間。接著定義 time 為目前的時間,cur 為目前的位置 ( 0 為左岸,1 為右岸 )。每次執行時,先取得兩岸最先到達的車子的時間,接著更新 time,若是 time 變大代表在這段期間內船都在等車子到達,之後船就必須開到對岸了,因為不管先到達的是目前的岸還是對岸,船都必須開到對岸,開船前會將目前岸上的車子移到船上 ( 紀錄時間並直接 pop() 掉 ),最後更新 time 及 cur 即可。