SDUT-双向队列
来源:互联网 发布:黄秋生 港独 知乎 编辑:程序博客网 时间:2024/06/07 19:48
双向队列
Time Limit: 1000MS Memory Limit: 65536KB
Problem Description
想想双向链表……双向队列的定义差不多,也就是说一个队列的队尾同时也是队首;两头都可以做出队,入队的操作。
现在给你一系列的操作,请输出最后队列的状态;
命令格式:
LIN X X表示一个整数,命令代表左边进队操作;
RIN X 表示右边进队操作;
ROUT
LOUT 表示出队操作;
Input
第一行包含一个整数M(M<=10000),表示有M个操作;
以下M行每行包含一条命令;
命令可能不合法,对于不合法的命令,请在输出中处理;
Output
输出的第一行包含队列进行了M次操作后的状态,从左往右输出,每两个之间用空格隔开;
以下若干行处理不合法的命令(如果存在);
对于不合法的命令,请输出一行X ERROR
其中X表示是第几条命令;
Example Input
8LIN 5RIN 6LIN 3LOUTROUTROUTROUTLIN 3
Example Output
37 ERROR
Hint
#include <bits/stdc++.h>using namespace std;char a[11];int stacks[22222];int c[22222];int tp=11111,op=11111,k=0;int main(){ int n,x,i,j; cin>>n; for(i=1; i<=n; i++) { scanf("%s",a); if(strcmp(a,"LIN")==0) { cin>>x; stacks[--tp]=x;//默认先从左边插入数值 } else if(strcmp(a,"RIN")==0) { cin>>x; stacks[op++]=x; } else if(strcmp(a,"LOUT")==0) { if(tp>=op)c[k++]=i,tp=op=11111;//越界后注意还原 else tp++; } else if(strcmp(a,"ROUT")==0) { if(tp>=op)c[k++]=i,tp=op=11111; else op--; } } if(tp<op) {for(i=tp;i<op;i++) printf("%d%c",stacks[i],i==op-1?'\n':' '); if(k>0) {for(j=0;j<k;j++)printf("%d ERROR\n",c[j]);} } return 0;}
0 0
- SDUT 1466 双向队列
- 双向队列 SDUT 1466
- SDUT 1466 双向队列
- SDUT 1466 双向队列
- sdut oj1466 双向队列
- acm sdut 双向队列
- SDUT-双向队列
- SDUT-1466 双向队列
- sdut 1466 双向队列
- SDUT 双向队列(队列)
- SDUT OJ 1466 双向队列
- sdut 双向链表
- 双向队列
- 双向队列
- 双向队列
- 双向队列
- 双向队列
- 双向队列
- linux源码安装mysql
- [leetcode: Python]349. Intersection of TWO Arrays
- 新型“蠕虫”勒索软件“wannacry”全球爆发态势及防火墙方式关闭445端口应对措施
- 【c++】模拟实现堆
- --no-defaults
- SDUT-双向队列
- iOS开发
- 常用対插式连接器01——德驰防水连接器
- maven依赖本地非repository中的jar包
- redis (四) -redis 常用命令与高级用法(密码及主从复制)
- LS-GAN(损失敏感GAN)
- 1027. Colors in Mars (20)
- 个人使命宣言
- C++和MFC数据类型