refresh的停车场

题目描述

refresh最近发了一笔横财,开了一家停车场。由于土地有限,停车场内停车数量有限,但是要求进停车场的车辆过多。当停车场满时,要进入的车辆会进入便道等待,最先进入便道的车辆会优先
进入停车场,而且停车场的结构要求只出去的车辆必须是停车场中最后进去的车辆。现告诉你停车场容量N以及命令数M,以及一些命令(Add num 表示车牌号为num的车辆要进入停车场或便道,
Del 表示停车场中出去了一辆车,Out 表示便道最前面的车辆不再等待,放弃进入停车场)。假设便道内的车辆不超过1000000.

输入

输入为多组数据,每组数据首先输入N和M(0< n,m <200000),接下来输入M条命令。

输出

输入结束后,如果出现停车场内无车辆而出现Del或者便道内无车辆而出现Out,则输出Error,否则输出停车场内的车辆,最后进入的最先输出,无车辆不输出。

示例输入

2 6
Add 18353364208
Add 18353365550
Add 18353365558
Add 18353365559
Del
Out

示例输出

18353365558

18353364208

#include <stdio.h> #include <stdlib.h> #include <string.h> #define stackmax 10000 #define stacknum 11111 typedef long long int ElenType; typedef struct { ElenType *base; ElenType *top; int stacksize; }SqStack; int InitStack(SqStack &S)//栈的初始化; { S.base=(ElenType *)malloc(sizeof(ElenType)*stacknum); if(!S.base) exit(0); S.top=S.base; S.stacksize=stacknum; return 1; } void push(SqStack &S,ElenType &e)//进栈; { if(S.top-S.base>=S.stacksize) { S.base=(ElenType *)realloc(S.base,sizeof(ElenType)*(stacknum+stackmax)); if(!S.base) exit(0); S.top=S.base+S.stacksize; S.stacksize+=stackmax; } *S.top++=e; } int pop(SqStack &S)//出栈; { if(S.top==S.base) return 0; S.top--; return 1; } int StackEmpty(SqStack &S)//判断栈是否为空栈; { if(S.top==S.base) return 1; else return 0; } void print(SqStack &S)//栈的元素的输出; { while(!StackEmpty(S)) { S.top--; printf("%lld\n",*S.top); } } typedef long long int QElemType; typedef long long  int Status; typedef struct QNode { QElemType data; QNode *next; } QNode, *Queueptr; typedef struct { Queueptr front; Queueptr rear; } LinkQueue; Status InitQueue (LinkQueue &q)//队的初始化; { q.front=q.rear=(Queueptr)malloc(sizeof(QNode)); if(!q.front) exit(0); q.front->next=NULL; return 1; } Status EnQueuer(LinkQueue &q, QElemType &e)//进队; { Queueptr p; p=(Queueptr)malloc(sizeof(QNode)); if(!p) exit(0); p->data=e; p->next = NULL; q.rear->next=p; q.rear=p; return 1; } Status DeQueuel(LinkQueue &Q,QElemType &e)//出队; { Queueptr p; if(Q.front==Q.rear) return 0; p=Q.front->next; e=p->data; Q.front->next=p->next; if(Q.rear==p) Q.rear=Q.front; free(p); return 1; } int EmptyQueue(LinkQueue q)//判断是否为空队; { if(q.front==q.rear) return 1; else return 0; } QElemType Queuelength(LinkQueue q)//队的长度‘ { QElemType i=0; Queueptr p; p=q.front; while(p!=q.rear) { i++; p=p->next; } return i; } int main() { long int i,n,m; long long int num; char c[4]; while(~scanf("%ld%ld",&n,&m)) { SqStack S; InitStack(S); LinkQueue Q; InitQueue(Q); int flag=1; for(i=1; i<=m; i++) { scanf("%s", c); if(strcmp(c,"Add")==0) { scanf("%lld",&num); if(S.top-S.base<n)//判断栈停车位是否已满, push(S, num); else EnQueuer(Q,num); } if(strcmp(c,"Del")==0) { if(StackEmpty(S)) flag=0;//标记不合法的命令; else { pop(S); DeQueuel(Q,Q.front->data); push(S,Q.front->data); } } if(strcmp(c,"Out")==0) { if(EmptyQueue(Q)) flag=0;//标记不合法的命令; else { DeQueuel(Q,Q.front->data); } } } if(flag==0) printf("Error\n"); else print(S);//栈内元素的输出; } } #include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #include <queue> #include <stack> using namespace std; int main() { int N,M,x,t; while(~scanf("%d %d",&N,&M)) { char minglin[10],num[100]; queue<string>qd;//队列的定义; stack<string>sz;//栈的定义; t=0; while(M--) { scanf("%s",minglin); if(minglin[0]=='A') { scanf("%s",num); x=sz.size();//栈的长度; if(x<N) sz.push(num);//进栈; else qd.push(num);//进队; } else if(minglin[0]=='D') { if(sz.empty())//空栈; t=1; else { sz.pop();//出栈; if(!qd.empty()) { sz.push(qd.front());//进栈; qd.pop();//出队; } } } else if(minglin[0]=='O') { if(qd.empty()) t=1; else qd.pop(); } } if(t==1) printf("Error\n"); else { while(!sz.empty()) { cout<<sz.top()<<endl; sz.pop(); } } } return 0; }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/509564.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vim目录说明

plugin、autoload、ftplugin有什么区别 很多初用vim的朋友在安装插件时都会有些疑惑。同样的插件&#xff0c;有些教程说安装在plugin目录&#xff0c;有些说安装在ftplugin目录&#xff0c;有些说安装在autoload目录&#xff0c;到底这些目录的区别是什么呢&#xff1f;今天阿…

Grafana Prometheus 服务安装部署(Linux服务器监控)

文章目录一、概述二、安装Prometheus1.安装node_exporter2.安装Prometheus三、安装Grafana展示监控监控进程一、概述 Prometheus 介绍 Prometheus是一套开源的监控&报警&时间序列数据库的组合&#xff0c;起始是由SoundCloud公司开发的。随着发展&#xff0c;越来越多…

加法变乘法(蓝桥杯)

题意&#xff1a; 我们都知道&#xff1a;123 … 49 1225 现在要求你把其中两个不相邻的加号变成乘号&#xff0c;使得结果为2015 比如&#xff1a; 123…10*1112…27*2829…49 2015 就是符合要求的答案。 请你寻找另外一个可能的答案&#xff0c;并把位置靠前的那个乘…

离散事件模拟-银行管理

题目描述 现在银行已经很普遍&#xff0c;每个人总会去银行办理业务&#xff0c;一个好的银行是要考虑 平均逗留时间的&#xff0c;即&#xff1a; 在一定时间段内所有办理业务的人员逗留的时间的和/ 总的人数。逗留时间定义为 人员离开的时间减去人员来的时间。银行只有考虑了…

Vim升华之树形目录插件NERDTree安装图解

无意中看到实验室的朋友使用的vim竟然能在左边显示树形目录&#xff0c;感觉很方便&#xff0c;这样子文件夹有什么文件一目了然。她说是一个插件叫NERDTree&#xff0c;安装执行后的效果如下&#xff0c;不是你想要的效果就别安了。我的系统是Ubuntu12.04&#xff0c;版本不同…

Grafana Prometheus Process-Exporter 服务进程监控

文章目录一、process-exporter安装二、Grafana展示离线导入在线导入之前介绍到Grafana Prometheus 安装部署并监控Linux服务器状态 https://datamining.blog.csdn.net/article/details/122671215 &#xff0c;这里我们介绍服务进程的通用监控。一、process-exporter安装 GitHu…

计算机学生的未来

计算机专业毕业后大致的工作方向是软、硬、网、图 四大类 尤其以软件、网络为现今的首选 从岗位上分&#xff0c;又可以分为技术道路、营销道路两大方向 if 你选择作技术&#xff0c;then 从现在开始&#xff0c;牢记&#xff1a; 天道酬勤&#xff01;&#xff01;&#xff…

linux 目录结构+常用命令+压缩命令+vim使用+及一些基础知识(非常好)

linux目录架构 / 根目录 /bin 常用的命令 binary file 的目录 /boot 存放系统启动时必须读取的档案&#xff0c;包括核心 (kernel) 在内 /boot/grub/menu.lst GRUB设置 /boot/vmlinuz 内核 /boot/initrd 核心解压缩所需 RAM Disk /dev 系统周边设备 …

【Kafka启动报错】Caused by: java.lang.OutOfMemoryError: Map failed

参考&#xff1a;https://stackoverflow.com/questions/43042144/kafka-server-failed-to-start-java-io-ioexception-map-failed 报错日志 [2022-02-15 16:50:40,558] ERROR Error while deleting the clean shutdown file in dir /home/es/kafka_2.11-2.2.1/logs (kafka.se…

饮料换购(蓝桥杯)

饮料换购 乐羊羊饮料厂正在举办一次促销优惠活动。乐羊羊C型饮料&#xff0c;凭3个瓶盖可以再换一瓶C型饮料&#xff0c;并且可以一直循环下去&#xff0c;但不允许赊账。 请你计算一下&#xff0c;如果小明不浪费瓶盖&#xff0c;尽量地参加活动&#xff0c;那么&#xff0c…

算法6:只有五行的Floyd最短路算法

暑假&#xff0c;小哼准备去一些城市旅游。有些城市之间有公路&#xff0c;有些城市之间则没有&#xff0c;如下图。为了节省经费以及方便计划旅程&#xff0c;小哼希望在出发之前知道任意两个城市之前的最短路程。上图中有4个城市8条公路&#xff0c;公路上的数字表示这条公路…

vim的强大,vim设置和插件的使用,脱离windows才是王道

map <C-F12> :!ctags -R --c-kindsp --fieldsiaS --extraq .<CR> let Tlist_Show_One_File1 let Tlist_Exit_OnlyWindow1 let Tlist_Auto_Open1 set nocompatible """"""""""界面""&quo…

CloudCanal 部署使用教程

文章目录 CloudCanal官方说明文档CloudCanal安装Docker安装docker-compose安装下载安装包解压安装包启动CloudCanal确认启动是否成功使用教程(必读)创建同步任务Mysql同步到ElasticSearch添加数据源创建集群(服务器)名称创建集群生成唯一节点标识安装新 sidecar 容器启动sideca…

DFS全排列

第一种方法&#xff1a; package com.tjrac_java_2;import java.util.Scanner;public class Fun {public static int s0;static int[] anew int[100000];public static void main(String[] args) {int n;Scanner sc new Scanner(System.in);nsc.nextInt();for (int i 1; i &…

Apache Kylin从入门到精通

Kylin 文章目录Kylin一、概述1.1 Kylin定义1.2 Kylin架构1.3 Kylin特点1.4 Apache Kylin4 概述为什么选择 Parquet 替换 HBase?预计算结果在 Kylin4.0 中如何存储?Kylin 4.0 的构建引擎Kylin 4.0 的查询引擎Kylin 4.0 与 Kylin 3.1 功能对比Kylin 4.0 性能表现如何升级Kylin …

排序分析

九大基础排序总结与对比 标签&#xff1a; 数据结构排序算法九大排序2016-06-07 15:43 12646人阅读 评论(6) 收藏 举报分类&#xff1a;data structure版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 目录(?)[] 请尊重个人劳动成果&#xff0c;转…

分巧克力(蓝桥杯)

标题&#xff1a; 分巧克力 儿童节那天有K位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。 小明一共有N块巧克力&#xff0c;其中第i块是Hi x Wi的方格组成的长方形。为了公平起见&#xff0c;小明需要从这 N 块巧克力中切出K块巧克力分给小朋友们。切出的巧克力…

Flume 实战开发指南

Flume 文章目录FlumeFlume介绍Flume核心概念Flume NG的体系结构SourceChannelSinkFlume的部署类型单一流程多代理流程&#xff08;多个agent顺序连接&#xff09;流的合并&#xff08;多个Agent的数据汇聚到同一个Agent &#xff09;多路复用流&#xff08;多级流&#xff09;l…

vim grep配置及使用

vimgrep /匹配模式/[g][j] 要搜索的文件/范围 g&#xff1a;表示是否把每一行的多个匹配结果都加入 j&#xff1a;表示是否搜索完后定位到第一个匹配位置 vimgrep /pattern/ % 在当前打开文件中查找 vimgrep /pattern/ * 在当前目录下查找所有 vimgrep…

C++ STL--stack/queue 的使用方法

1、stack stack 模板类的定义在<stack>头文件中。 stack 模板类需要两个模板参数&#xff0c;一个是元素类型&#xff0c;一个容器类型&#xff0c;但只有元素类型是必要 的&#xff0c;在不指定容器类型时&#xff0c;默认的容器类型为deque。 定义stack 对象的示例代码…