/*
https://vjudge.net/problem/UVA-514
*/
#include "pch.h"
#include<iostream>
#include<cstdio>
#include<stack>
using namespace std;
const int MAXN = + ;
int n, target[MAXN]; int main()
{ while (scanf("%d", &n) == ) // 输入,一共n辆火车
{
int isOnePart = ; // 是否是同一次测试
if (n == ) // 程序应当结束
break;
while (isOnePart) // 是同一次测试时
{
stack<int> s;
int A = , B = ; // A:进C站顺序 1,2,3,...,n B:数组target的下标
for (int i = ; i <= n; i++)
{
scanf("%d", &target[i]); // 输入出C站顺序
if (target[i] == )
{
isOnePart = ;
printf("\n"); // 注意!
break;
}
}
if (isOnePart == ) // 退出此次测试,进入另一部分的测试
break;
int ok = ; // 标志,是否可以按顺序出站
while (B <= n) // 判断当前出C站的车辆数是否达到总数
{
if (A == target[B]) // 要进站的火车与要出站的火车为同一辆,则进站后直接出站
{
A++; B++;
}
else if (!s.empty() && s.top() == target[B]) // 栈(站)非空,栈顶与要出站的火车相同,则出站
{
s.pop();
B++; // 要出站的++
}
else if (A <= n) // 要进站的与出站的不同,只进站,先等着,当栈顶与目标相同时再出(上一个if)
{
s.push(A++);
}
else
{
ok = ; //正常结束循环为b=n, 若前几种情况都不符合,则不能按照要求顺序出站,break
break;
}
}
printf("%s\n", ok ? "Yes" : "No");
} }
return ;
}

最新文章

  1. 简单快捷好用的vim配置和终端配置推荐
  2. Nginx 启用gzip压缩
  3. java指针
  4. jquery 列求和
  5. 单例-b
  6. C# 窗体在线2,8,16进制转换以及,在线更新时间
  7. Oracle性能分析7:创建索引
  8. java注意事项演示 地图产生表 演示样本 来自thinking in java 4 20代码的章
  9. 为WebBrowser的WEB页的Document注册事件的问题
  10. mpi和cuda混合编程的正确编译
  11. mvn 下载源码和javadoc
  12. zencart里常用 SQL
  13. PHP实现水印效果(文字、图片)
  14. element 给table的个别表格框添加样式 ---重构里面的组件
  15. TinyMCE
  16. C#微信公众号开发——获取access_token
  17. 20155334 《网络攻防》 Exp7 网络欺诈防范
  18. python 单变量线性回归
  19. 生成图片验证码(.NET)
  20. 【转】Linux中/etc/profile,/etc/bashrc,~/.profile,~/.bashrcd的区别

热门文章

  1. [小问题笔记(九)] SQL语句Not IN 效率低,用 NOT EXISTS试试
  2. SAP固定资产业务场景及方案
  3. C# linq 最大、最小对象的扩展
  4. IOS学习笔记一1
  5. chrome浏览器的SwitchyOmega插件使用方法
  6. 《深入理解JVM虚拟机》读书笔记
  7. gzip: stdin: not in gzip format tar: Child returned status 1 tar: Error is not recoverable: exiting now
  8. sklearn.linear_model.LinearRegression
  9. HashMap源码解读
  10. ABP捕捉异常错误代码