// Bryan Zhu
// Holmdel High School
// Contest 4 2009-2010
// Intermediate 3 Division
import java.util.*;
class ACSLStackQueue
{
public
static void main(String args[])
{
Scanner
kb = new Scanner(System.in);
String
input;
System.out.println("This
program performs non-standard operations on stacks and queues.");
for
(int loop=0; loop<5; loop++)
{
System.out.println();
System.out.println("Please
enter input with operations separated by one comma:");
System.out.print(loop+1
+ ". ");
input
= kb.nextLine().toUpperCase();
StringTokenizer
sT = new StringTokenizer(input,",");
int
SoQ = 0;
ArrayList<String>
stackqueue = new ArrayList<String>(5);
stackqueue.add("A");
stackqueue.add("B");
stackqueue.add("C");
stackqueue.add("D");
stackqueue.add("E");
if
(sT.nextToken().equals("Q"))
SoQ
= 1-SoQ;
while(sT.hasMoreTokens())
{
String
operation = sT.nextToken();
if
(operation.substring(0,3).equals("POP"))
{
if
(SoQ == 0)
for
(int i=0; i<Integer.parseInt(operation.substring(4)); i++)
stackqueue.remove(stackqueue.size()-1);
else
for
(int i=0; i<Integer.parseInt(operation.substring(4)); i++)
stackqueue.remove(0);
}
if
(operation.substring(0,3).equals("PSH"))
stackqueue.add(operation.substring(4));
if
(operation.substring(0,3).equals("DUP"))
for
(int i=0; i<Integer.parseInt(operation.substring(4)); i++)
stackqueue.add(stackqueue.get(i));
if
(operation.substring(0,3).equals("SWP"))
{
String[]
temp = new String[Integer.parseInt(operation.substring(4))];
for
(int i=0; i<temp.length; i++)
{
temp[i]
= stackqueue.get(i);
stackqueue.set(i,stackqueue.get(stackqueue.size()-temp.length+i));
stackqueue.set(stackqueue.size()-temp.length+i,temp[i]);
}
}
if
(operation.substring(0,3).equals("SWH"))
SoQ
= 1-SoQ;
if
(operation.substring(0,3).equals("CRC"))
{
if
(SoQ == 0)
for
(int i=0; i<Integer.parseInt(operation.substring(4)); i++)
stackqueue.add(0,stackqueue.remove(stackqueue.size()-1));
else
for
(int i=0; i<Integer.parseInt(operation.substring(4)); i++)
stackqueue.add(stackqueue.remove(0));
}
if
(operation.substring(0,3).equals("PIN"))
stackqueue.add(0,operation.substring(5));
if
(operation.substring(0,3).equals("PRT"))
{
if
(SoQ == 0)
{
System.out.print(loop+1
+ ". ");
for
(int i=0; i<Integer.parseInt(operation.substring(4))-1; i++)
System.out.print(stackqueue.get(stackqueue.size()-Integer.parseInt(operation.substring(4))+i)
+ ", ");
System.out.println(stackqueue.get(stackqueue.size()-1));
}
else
{
System.out.print(loop+1
+ ". ");
for
(int i=0; i<Integer.parseInt(operation.substring(4))-1; i++)
System.out.print(stackqueue.get(i)
+ ", ");
System.out.println(stackqueue.get(Integer.parseInt(operation.substring(4))-1));
}
}
}
}
}
}