输入第一行为测试数据组数。每组测试数据第1行输入两个整数n(1<=n<=100)、c(1<=c<=20000)分别代表停车的次数和校车容量,接下来有n行,每一行第一个数m表示有人上车还是下车(0 <= m <= 200):(1)当m=0时,后面紧跟着输入一个非负整数k,表示此时有k个人下车;(2)当m>0时,后面输入m个正整数,表示等待上车的人的编号,可能有人因车满而无法上车。
输入输出样例:
Sample Input
1
4 10
6 1 2 3 4 5 6
0 3
2 7 8
0 3
Sample Output
Case #1:
6 5 4
8 7 3
代码:
#include
using namespace std;
typedef struct
{
int *base;
int *top;
int stacksize;
} SqStack;
void InitStack(SqStack &S,int m)
{
S.base=(int*)malloc(m*sizeof(int));
S.top=S.base;
S.stacksize=m;
}
void pop(SqStack &S,int &e)
{
if(S.top!=S.base)
e=*--S.top;
}
void push(SqStack &S,int e)
{
if(S.top-S.base!=S.stacksize)
*(S.top)++=e;
}
int main()
{
int zu;
cin>>zu;
SqStack S;
for(int i=1; i<=zu; i++)
{
int n,c;
cout<<"Case #"< cin>>n>>c;
InitStack(S,c);
while(n--)
{
int s,e,num;
cin>>s;
if(s==0)
{
cin>>num;
for(int i=0; i
pop(S,e);
cout<
pop(S,e);
cout<
else
{
while(s--)
{
cin>>num;
push(S,num);
}
}
}
}
}
提交到OJ上,结果内存超限50%,内存超限是什么意思,哪里出了问题啊?