题目描述
你需要实现一个栈,支持以下两种操作:
1、插入一个整数 xx;
2、删除栈顶的前 kk 个数字并在一行中按出栈顺序输出被删除的数字,数字之间以空格分隔(若删除前栈中元素不足 kk 个,则不进行删除操作,输出 -1
)。
初始时栈为空,现在给你 nn 个操作指令,请你按照要求输出答案。
输入格式
第一行一个正整数 nn,表示操作的个数。
接下来共 nn 行。
对于其中的第 ii 行,首先一个正整数 optiopti 表示操作的种类,若 opti=1opti=1 则再输入一个整数 xx,表示向栈中插入 xx;若 opti=2opti=2,则再输入一个整数 kk,表示删除栈顶的前 kk 个数字。
输出格式
共若干行,每行若干个用空格隔开的整数或 -1
。
#include<bits/stdc++.h>
using namespace std;
int n,top=0,a[101000];
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
int opt;
cin>>opt;
if(opt==1){
int x;
cin>>x;
top++;
a[top]=x;
}
if(opt==2){
int y;
cin >> y;
if(top<y){
printf("-1\n");
}
else{
for(int i=top;i>=top-y+1;i--)
printf("%d ",a[i]);
printf("\n");
top-=y;
}
}
}
return 0;
}
标签:nn,删除,int,Daimayuan,kk,xx,Online,Judge,top
From: https://blog.csdn.net/weixin_51110569/article/details/142904177