Code: Select all
import java.util.*;
public class Main
{
public static void main(String args[])
{
Scanner scan = new Scanner(System.in);
int cases = 0;
while(true)
{
cases++;
int t = scan.nextInt();
if(t == 0)
break;
int[] h = new int[1000005];
for(int i=0;i < t;i++)
{
int n = scan.nextInt();
for(int j=0;j < n;j++)
h[scan.nextInt()] = i;
}
Node head = null;
Node tail = null;
Node[] p = new Node[t];
System.out.println("Scenario #" + cases);
//process
while(true)
{
String str = scan.next();
if(str.equals("STOP"))
break;
if(str.equals("ENQUEUE"))
{
int in = scan.nextInt();
//System.out.println(in + " belongs to team " + h[in]);
if(head == null)
{
//System.out.println("New head");
p[h[in]] = head = tail = new Node(in, null);
}
else if(p[h[in]] == null)
{
//System.out.println("First element of team " + h[in]);
tail.next = p[h[in]] = new Node(in, null);
tail = p[h[in]];
}
else
{
//System.out.println("Adding to back of team " + h[in]);
Node tmp = new Node(in, p[h[in]].next);
if(tmp.next == null)
tail = tmp;
p[h[in]].next = tmp;
p[h[in]] = tmp;
//System.out.println("So the new tail end is " + p[h[in]].n);
}
}
else
{
System.out.println(head.n);
if(head.next != null && h[head.n] == h[head.next.n])
p[h[head.n]] = head.next;
else
p[h[head.n]] = null;
head = head.next;
if(head == null)
tail = null;
}
}
System.out.println();
}
}
}
class Node
{
public int n;
public Node next;
public Node(int in, Node inext)
{
n = in;
next = inext;
}
}