假设,你受聘于一个软件公司。 你现在在著名的"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; }
|