Problem Description
ACboy was kidnapped!!
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! |
Input
The input contains multiple test cases.
The first line has one integer,represent the number oftest cases. And the input of each subproblem are described above. |
Output
For each command "OUT", you should output a integer depend on the word is "FIFO" or "FILO", or a word "None" if you don't have any integer. |
Sample Input
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 |
Sample Output
1 2 2 1 1 2 None 2 3 |
栈、队列
1 #include <cmath> 2 #include <cstdio> 3 #include <algorithm> 4 #include <cstring> 5 #include <string> 6 #include <cstdlib> 7 #include <queue> 8 #include <stack> 9 using namespace std; 10 11 const int maxn=210; 12 queue<int> q; 13 stack<int> st; 14 int n,a; 15 char s[20]; 16 17 void close() 18 { 19 exit(0); 20 } 21 void dostack() 22 { 23 for (int i=1;i<=n;i++) 24 { 25 scanf("%s",s); 26 if (s[0]=='I') 27 { 28 scanf("%d",&a); 29 st.push(a); 30 } 31 else 32 { 33 if (!st.empty()) 34 { 35 printf("%d ",st.top()); 36 st.pop(); 37 } 38 else 39 printf("None "); 40 } 41 } 42 } 43 44 void doqueue() 45 { 46 for (int i=1;i<=n;i++) 47 { 48 scanf("%s",s); 49 if (s[0]=='I') 50 { 51 scanf("%d",&a); 52 q.push(a); 53 } 54 else 55 { 56 if (!q.empty()) 57 { 58 printf("%d ",q.front()); 59 q.pop(); 60 } 61 else 62 printf("None "); 63 } 64 } 65 } 66 67 void init() 68 { 69 int T; 70 while (scanf("%d",&T)!=EOF) 71 { 72 while (T--) 73 { 74 while (!q.empty()) q.pop(); 75 while (!st.empty()) st.pop(); 76 scanf("%d",&n); 77 scanf("%s",s); 78 if (s[2]=='F') //queue 79 doqueue(); 80 else 81 dostack(); 82 } 83 } 84 } 85 86 int main () 87 { 88 init(); 89 close(); 90 return 0; 91 }