题目描述
你需要实现 n� 个栈,编号为 11 到 n�,并支持以下两种操作:
1、对 id�� 号栈插入一个整数 x�;
2、对 id�� 号栈删除栈顶并输出被删除的数(若删除前栈已为空,则不进行删除操作,输出 error
)。
初始时栈为空,现在给你 m� 个操作指令,请你按照要求输出答案。
输入格式
第 11 行 22 个正整数 n,m�,�,分别表示栈的数量和操作的个数。
接下来共 m� 行。
对于其中的第 i� 行,首先 22 个正整数 id�� 和 opti���� 表示对 id�� 号栈进行第 opti���� 操作,若 opti=1����=1 则再输入一个整数 x�,表示向栈中插入 x�;若 opti=2����=2,则表示删除栈顶。
输出格式
共若干行,每行一个整数或 error
。
样例输入
2 5
1 1 1
2 1 2
1 2
2 2
1 2
样例输出
1
2
error
数据范围
对于 100%100% 的数据,保证 1≤n≤1001≤�≤100,1≤m≤1031≤�≤103,−109≤x≤109−109≤�≤109。
#include<bits/stdc++.h>
using namespace std;
int s[101][1001];
int m,n ,top[1001];
int main() {
scanf("%d%d",&n,&m);
memset(top, 0,sizeof(top));
for(;m--;){
int opt ,id;
scanf("%d%d",&id,&opt);
if(opt == 1){
int x;
scanf("%d",&x);
s[id][++top[id]] = x;
}else{
if(!top[id]){
printf("error\n");
}else{
printf("%d\n",s[id][top[id]--]) ;
}
}
}
}