假设,你受聘于一个软件公司。 你现在在著名的"D++ -project"(D++是一种新的通用程序设计语言)开发小组工作。你的任务很平凡,是负责内存管理器的开发,使D++能够使用大的栈空间。
  input: 输入首行为对栈操作的指令数N,0 < N <= 100000.之后N行,每行为对栈操作的指令。格式无非两种,要么是PUSH A B (意思是把 B 压入栈 A),或者是POP A (意思是从栈 A取出其栈顶元素),这里A是栈的编号(1 <= A <= 1000),B是一个整数(0 <= B <= 109)。假设,输入文件中的每一个操作都是正确的(也就是说,在每一个POP操作前,对应的栈都是非空的)。
  output: 对于输入文件中的每一个POP操作, 输出其值,即执行POP操作后,从对应的栈中取出的数值。按照输入文件中POP的顺序输出。一行一个数。
  input: 7 PUSH 1 100 PUSH 1 200 PUSH 2 300 PUSH 2 400 POP 2 POP 1 POP 2
  output: 400 200 300【参考程序】: 
    
        
            | 
             2635423 
             | 
            
             17:55:22 11 Jun 2009 
             | 
            
             wolftom 
             | 
            
             1220 
             | 
            
             C++ 
             | 
            
             Accepted 
             | 
            
               
             | 
            
             0.375 
             | 
            
             725 KB 
             | 
         
    
 
 #include<iostream> using namespace std; int val[100010]; short num[100010]; int last[1010]; int n; int main() {     scanf("%d\n",&n);     char s[10];     int ina,inb;     for (int i=1;i<=n;i++)     {         scanf("%s",s);         if (s[1]=='U')         {             scanf("%d %d",&ina,&inb);             val[i]=inb;num[i]=ina;             last[ina]=i;         }         else          {             scanf("%d",&ina);             printf("%d\n",val[last[ina]]);             num[i]=0;num[last[ina]]=0;             while (num[last[ina]]!=ina && last[ina])                 last[ina]--;         }     }     return 0; } 
	 
	
	
 
 
	    
    
 
				
 |