7-10 gg的超市 (25 分)

gg有一个超市,超市里有2个员工,分别是送货的小a、摆货的小b,超市有大厅和仓库。大厅里有个货架,货架只有一个口,可以放商品或者取商品;仓库里有条传送带,会把放入前门的货品运送到后门。小a的工作是每天早上把商品一个一个的送到仓库前门;小b的工作是每天早上把商品从仓库后门一个一个的取出放到大厅的货架上,一般来说,都会把新取的货品放到货架最底层,可是小b很懒,每次都把商品放到最前面;超市每天都有顾客来购物。gg偶尔会在一天的营业结束后来超市抽查货品,如果发现货架上的第一个商品是三天前进货的,gg会发怒,并把货架清空。

输入格式:

在第一行给出n(n<=100),代表总天数,接下来n行为每天发生的事情。

每行第一个数字代表第几天,题目保证天数依次有序

每行第二个数字代表小a今天得进货数量,范围0~1000

每行第三个数字代表小b今天往货架上放货得数量,范围0~1000

每行第四个数字代表顾客今天买走了多少商品,范围0~1000

每行第五个数字代表gg今天来了没有,1代表来了,0代表没来

数字间以空格分隔

数据不保证小b得取货量<=仓库剩余量,货架剩余量<=估计购买量

输出格式:

如果某天gg抽查时发怒了,则输出天数后加一串字符串"Wang!Wang!!Wang!!!"。

例:gg在第三天抽查时发怒了,则输出“3 Wang!Wang!!Wang!!!”.

输入样例:

在这里给出一组输入。例如:

5
1 10 4 3 0
2 10 4 4 0
3 0 5 5 0
4 0 1 1 1
5 0 0 0 0

输出样例:

在这里给出相应的输出。例如:

4 Wang!Wang!!Wang!!!

栈和队列模拟

#include<bits/stdc++.h>
using namespace std;
int n;
struct node{
	int time;
}t;
int main()
{
	cin>>n;
	int sum = 0;
	int m,a,b,buy,vis;
	stack<node>s,temp;
	queue<node>q,tmp;
	for(int i = 1;i<=n;i++){
		cin>>m>>a>>b>>buy>>vis;
		for(int i = 0;i<a;i++){
			node k;
			k.time = 0;
			q.push(k);
		}
		sum+=a;
		if(b>=sum) b = sum;
		for(int j = 0;j<b;j++){
			sum--;
			node k = q.front();
			q.pop();
			s.push(k);
		}
        int len = s.size();
		if(buy>len) buy = len;
		while(buy--){
			s.pop();
		}
		while(!s.empty()){
			node k;
			k = s.top();
			k.time++;
			temp.push(k);
			s.pop();
		}
		while(!temp.empty()){
			node k;
			k = temp.top();
			temp.pop();
			s.push(k);
		}
		while (!q.empty())
		{
			node k = q.front();
			q.pop();
			k.time++;
			tmp.push(k);
		}
		while(!tmp.empty()){
			node k = tmp.front();
			tmp.pop();
			q.push(k);
		}
		if(s.size() !=0){
			if(s.top().time>3&&vis==1){
			printf("%d Wang!Wang!!Wang!!!\n",i);
			while(!s.empty()){
				s.pop();
			}
		}
		}
		
	}
	return 0;
}

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值