栈和队列的应用,栈是先进后出,队列是先进先出。
ACboy needs your help again!
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2594 Accepted Submission(s): 1344
he miss his mother very much and is very scare now.You can't image how dark the room he was put into is, so poor :(.
As a smart ACMer, you want to get ACboy out of the monster's labyrinth.But when you arrive at the gate of the maze, the monste say :" I have heard that you are very clever, but if can't solve my problems, you will die with ACboy."
The problems of the monster is shown on the wall:
Each problem's first line is a integer N(the number of commands), and a word "FIFO" or "FILO".(you are very happy because you know "FIFO" stands for "First In First Out", and "FILO" means "First In Last Out").
and the following N lines, each line is "IN M" or "OUT", (M represent a integer).
and the answer of a problem is a passowrd of a door, so if you want to rescue ACboy, answer the problem carefully!
The first line has one integer,represent the number oftest cases.
And the input of each subproblem are described above.
4 4 FIFO IN 1 IN 2 OUT OUT 4 FILO IN 1 IN 2 OUT OUT 5 FIFO IN 1 IN 2 OUT OUT OUT 5 FILO IN 1 IN 2 OUT IN 3 OUT
1 2 2 1 1 2 None 2 3
#include <stdio.h>
#include <string.h>
int main()
{
int t,n,i,a,b;
char str1[6], str2[6];
int c[1000];
scanf("%d",&t);
while(t--)
{
scanf("%d %s",&n,str1);
a=0;
b=0;
while(n--)
{
getchar();
scanf("%s",str2);
if(strcmp(str2,"IN")==0)
{
scanf("%d",&c[b++]);
}
else if(strcmp(str2,"OUT")==0)
{
if(strcmp(str1,"FIFO")==0)
{
if(a<b)
{
printf("%d\n",c[a++]);
}
else
{
puts("None");
a=0;
b=0;
}
}
else if(strcmp(str1,"FILO")==0)
{
if(a<b)
{
printf("%d\n",c[--b]);
}
else
{
puts("None");
a=0;
b=0;
}
}
}
}
}return 0;
}