可以使用 Priority_Queue 來將每個人持有的金額存進去,存資料時可以使用 .push(金額)。當要取資料時,可以使用 .top(),就會回傳目前最大值。
使用 While迴圈,如果目前最大金額可以支付目前的菜,就將最大金額 -= 菜的價錢,不能使用 .top() -= 菜的價錢,所以可以將一個變數設定為 .top(),然後將這個變數 -= 菜的價錢,然後使用 .pop(),這樣會將資料中最大的金額刪除,並且重新 .push(剛剛進行減法的變數)。如果不夠支付金額,則用剛剛的辦法,只是這次將變數歸零,並且將目前菜的價錢 -= 最大金額,然後繼續跑 While迴圈。
可以設定一個布林值判斷是否要輸出「Oh My God」,如果已經完蛋了之後的 For迴圈只要收到資料之後都可以直接 Continue。