中階班例題

排隊購票時間統計 II

時間限制 1000 ms · 記憶體限制 256 MB · C++

有 $n$ 位顧客購票,每人有一個購票需求 $a_i$。

他們會依據一組給定的初始排列順序排隊購票。

現在加入 VIP 制度:若某人是 VIP,則每輪最多可購買 3 張票,否則只能買 1 張票。

從第 0 分鐘開始,每分鐘隊列最前面的人會買票;若還有票需要買,則會重新排回隊尾。

請你輸出每個人買完票的時間,共 $n$ 行。

輸入說明

  • 第一行輸入整數 $n$
  • 第二行輸入 $n$ 個整數 $a_i$,第 $i$ 人購買票數
  • 第三行輸入 $n$ 個整數,為初始排隊順序(為 $0$ 到 $n-1$ 的排列)
  • 第四行輸入 $n$ 個整數,每個為 0 或 1,表示該人是否為 VIP

$1 \le n \le 1000$, $1 \le a_i \le 100$

輸出說明

輸出 $n$ 行,第 $i$ 行代表第 $i$ 位顧客買完票的時間(從 0 開始)。

範例

範例輸入 1

5
3 1 2 4 2
0 1 2 3 4
1 0 0 1 1

範例輸出 1

0
1
5
6
4
C++77 / 50,000

「跑範例測資」只跑題目敘述上的範例,會顯示你的輸出與正確答案的對照; 「提交評測」會跑完整的測資並給實際結果,但不會顯示測資內容。兩者都不需要帳號,也不會留下成績紀錄。