CCF基础篇 小明排队

题目描述

一天小明去排队买电影票,然后她发现队伍已经有了n个人,分别为a1,a2…an。小明不想排队,于是她开始观察这条队伍m秒, 每秒仅有1个人来排队或者排在最后的那个人不耐烦走了,如果在这一秒内两者都没有发生那么小明就想知道队伍还有没有人。

输入

第一行有两个整数n(n≤1000),m(m≤10000)。第二行有n个整数ai(ai≤100000)表示排在第i位是人是ai。接下来m行,每行有一个整数p(p≤3),当p=1时则当前行还存在另一个整数x(x≤100000)表示x来排队;当p=2时则表示排在最后的那个人不耐烦走了;当p=3时小明想知道队伍还有没有人。

输出

若干行,每一行表示队伍还有没有人,没有人输出YES,有输出排在最后的人是谁。

样例输入

3 8
1 2 3
1 4
3
2
3
2
2
2
3

样例输出

4
3
YES

来源/作者: CCF基础篇

Cake 1#

#include<cstdio>
using namespace std;
int n,m,a[100010],i,j,k,l,p;
bool q;
int main()
{
	scanf("%d%d",&n,&m);
	for(i=1;i<=n;i++) scanf("%d",&a[i]);
	i=n;
	for(j=1;j<=m;j++)
	{
		scanf("%d",&p);
		if(p==1) 
		{
			i++;
			scanf("%d",&a[i]);
		}
		if(p==2)
		{
			a[i]=0;
			i--;
		}
		if(p==3)
		{
			q=false;
			for(k=i;k>=1;k--)
			{
				if(a[i]>0) 
				{
					printf("%d\n",a[k]);
					q=true;
					k=1;
				}
			}
			if(!q) printf("YES\n");
		}	
	}
}

Cake 2#

#include<cstdio>
#include<stack>
#include<algorithm>
using namespace std;
stack<int>array;
inline int read(){
	int x=0,f=1;
	char ch;
	while(ch<'0'||ch>'9') {if(ch=='-')f=-1;ch=getchar();}
	while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}
	return f*x;
}
main(){
	int n=read(),m=read();
	for(int i=0;i<n;i++){array.push(read());}
	for(int i=0;i<m;i++){
		int p=read();
		if(p==1){array.push(read());continue;}
		if(p==2){array.pop();continue;}
		if(p==3){if(array.empty())printf("YES\n");else printf("%d\n",array.top());}
	}
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值