回分類題庫
d046: 團隊佇列
出處:

Difficulity : 1
Accepted : 35 Times | Submit :159 Times | Clicks : 2655
Accepted : 20 Users | Submit : 33 Users | Accepted rate : 61%
Time Limit :2001 ms | Memory Limit : 32001 KBytes
題目加入時間 : 2008-10-18 09:49

Content :

QueuePriority Queue 是電腦科學家所耳熟能詳的資料結構,但 Team Queue (團隊佇列) 則鮮為人知,但它卻時常發生在你的日常生活中,例如你中午時間排隊用餐時便是一個團隊佇列(譯註:就是指排隊用餐時,插隊在自己認識的人後面......)。

在團隊佇列中的每個元素皆屬於某個特定團隊。當元素要被加入佇列(enqueue)時,它會先尋找佇列中是否已有和它相同團隊的元素,若有則加入到該佇列中他們團隊的後面;反之,如果沒有則加在佇列的尾巴。移除元素(dequeue)則和一般的佇列相同,依照他們排列的順序從佇列的頭開始移除。

你的任務是要寫一個程式來模擬插隊團隊佇列。

(translated by Mr. WrongAnswer)

Input :

輸入中將會包含一組以上的測試資料。每組測試資料中會先輸入 t 代表有 t 個團隊 (1 ≤ t ≤ 1000)。

之後會有 t 行描述每個團隊。每一行第一個數字代表該團隊的人數,之後接著每個團員的代號,我們使用介於 0 - 999999 的整數作為代號。每個團隊至多只會有 1000 的團員。

接下來則是一連串的指令,指令包含了以下三種:

當輸入的 t 為 0 時,代表輸入結束。

Warning: 每組測試資料可能包含高達 200000 個指令,因此你必須用有效率的方式實作團隊佇列。

Output :

每組測試中,第一行要先印出 "Scenario #k" , k 代表這是第幾組測試資料。接著逐一印出每次 DEQUEUE 的元素,一個元素一行。最後在每組測試資料後印一行空白行。

Sample Input :

2
3 101 102 103
3 201 202 203
ENQUEUE 101
ENQUEUE 201
ENQUEUE 102
ENQUEUE 202
ENQUEUE 103
ENQUEUE 203
DEQUEUE
DEQUEUE
DEQUEUE
DEQUEUE
DEQUEUE
DEQUEUE
STOP
2
5 259001 259002 259003 259004 259005
6 260001 260002 260003 260004 260005 260006
ENQUEUE 259001
ENQUEUE 260001
ENQUEUE 259002
ENQUEUE 259003
ENQUEUE 259004
ENQUEUE 259005
DEQUEUE
DEQUEUE
ENQUEUE 260002
ENQUEUE 260003
DEQUEUE
DEQUEUE
DEQUEUE
DEQUEUE
STOP
0

Sample Output :

Scenario #1
101
102
103
201
202
203

Scenario #2
259001
259002
259003
259004
259005
260001

Hint :

ACMOJ 540

Author :

(管理員:MrWrongAnswer)

  Solve it!   Status Forum (0)

C++
C
JAVA
35294. nthuskate (26 ms , 1590KB)
22392. david942j (50 ms , 1039KB)
340. yuhanlyu (52 ms , 745KB)
22385. david942j (54 ms , 956KB)
69341. SeeSoul (56 ms , 1444KB)
54759. ag100 (24 ms , 749KB)
8425. derching (24 ms , 946KB)
54758. ag100 (34 ms , 747KB)
54757. ag100 (36 ms , 743KB)
31581. illusionk (71 ms , 1095KB)
沒有解題記錄

執行時間會受很多因素影響因此僅供參考,主機等級請看這裡