【问题描述】

  栈是一种强大的数据结构,它的一种特殊功能是对数组进行排序。例如,借助一个栈,依次将数组1,3,2按顺序入栈或出栈,可对其从大到小排序:1入栈;3入栈;3出栈;2入栈;2出;1出栈。在上面这个例子中,出栈序列是3,2,1,因此实现了对数组的排序。遗憾的是,有些时候,仅仅借助一个栈,不能实现对数组的完全排序。例如给定数组2,1,3,借助一个栈,能获得的字典序最大的出栈序列是3,1,2:2入栈;1入栈;3入栈;3出栈;1出栈;2出栈。

  请你借助一个栈,对一个给定的数组按照出栈顺序进行从大到小排序。当无法完全排序时,请输出字典序最大的出栈序列。

【输入格式】

  输入共2行。

  第一行包含一个整数n,表示入栈序列长度。

  第二行包含n个整数,表示入栈序列。输入数据保证给定的序列是1到n的全排列,即不会出现重复数字。

【输出格式】

  仅一行,共n个整数,表示你计算出的出栈序列。

【样例输入】

  3

  2 1 3

【样例输出】

  3 1 2

【样例解释】

  这回山里有座塔。

【数据规模与约定】

  对于30%的数据,1<=N<=10^3。

  对于60%的数据,1<=N<=10^5。

  对于100%的数据,1<=N<=10^6。

【题目分析】

  f数组处理出到目前可以输出的最大值,要倒叙处理

  

#include<iostream>
#include<cstdio>
#include<cstring>
#define ge getchar()
using namespace std;
int a[],f[],s[];
int n,k=;
int read()
{
int x=;char ch=ge;
while(ch<''||ch>'') ch=ge;
while(ch>=''&&ch<='')
{
x=x*+ch-'';ch=ge;
}
return x;
}
int main()
{
freopen("haha.in","r",stdin);
freopen("haha.out","w",stdout);
n=read();
for(int i=;i<n;i++)
a[i]=read();
for(int i=n-;i>=;i--)
f[i]=max(a[i],f[i+]);
s[]=-;
for(int i=;i<n;i++)
{
s[k++]=a[i];
while(k!=&&s[k-]>f[i+])
printf("%d ",s[--k]);
}
fclose(stdin);
fclose(stdout);
return ;
}

haha的更多相关文章

  1. <input type="hidden" id="haha" name="wang" value="xiaodong" />

    jsp中一个隐藏的文本框,文本框里的值是:xiaodong id属性和name属性:就是在JavaScript中或者控制器中根据id或name属性取它的value的值 开发人员所需要,又不想让用户看到 ...

  2. HaHa's Morning(状压DP)

    描述 HaHa is so happy today, he is going to participate the 7th Hunan University Programming Contest. ...

  3. file -i haha.csv

    user@user-desk ~/Downloads/largetrd$ file -i LT_Largetrd.csvLT_Largetrd.csv: text/plain; charset=utf ...

  4. 让姑姑不再划拳 码农也要有原则 : SOLID via C#

    “姑娘,别这样.我们是有原则的.” “一个有原则的程序猿是不会写出 “摧毁地球” 这样的程序的,他们会写一个函数叫 “摧毁行星”而把地球当一个参数传进去.” “对,是时候和那些只会滚键盘的麻瓜不同了, ...

  5. Python高手之路【二】python基本数据类型

    一:数字 int int(整型): 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位系统上,整数的位数为64位,取值 ...

  6. 【Win 10 应用开发】启动远程设备上的应用

    这个功能必须在“红石-1”(build 14393)以上的系统版中才能使用,运行在一台设备上的应用,可以通过URI来启动另一台设备上的应用.激活远程应用需要以下前提: 系统必须是build 14393 ...

  7. 浅谈web攻防

    CSRF 跨站请求伪造(Cross-Site Request Forgery) -原理- 从上图可以看出,要完成一次CSRF攻击,受害者必须依次完成两个步骤: 1.登录受信任网站A,并在本地生成Coo ...

  8. 自己实现一个javascript事件模块

    nodejs中的事件模块 nodejs中有一个events模块,用来给别的函数对象提供绑定事件.触发事件的能力.这个别的函数的对象,我把它叫做事件宿主对象(非权威叫法),其原理是把宿主函数的原型链指向 ...

  9. NSURLSession详解

    导语 现在NSURLConnection在开发中会使用的越来越少,iOS9已经将NSURLConnection废弃,现在最低版本一般适配iOS7,所以也可以使用. NSURLConnection相对于 ...

随机推荐

  1. php-引号中出现$

    当双引号中包含变量时,变量对应的值会与双引号中的内容连接在一起: 当单引号中包含变量时,变量会被当做字符串输出. 慕课网,I love you!慕课网,$love

  2. PHP中9大缓存技术总结(转载 http://www.php100.com/html/php/lei/2015/0919/8969.html)

    PHP中9大缓存技术总结 来源:   时间:2015-09-19 02:40:33   阅读数:57767 分享到: 12 [导读] 1.全页面静态化缓存也就是将页面全部生成html静态页面,用户访问 ...

  3. Fresco源码解析 - DataSource怎样存储数据

    Fresco源码解析 - DataSource怎样存储数据 datasource是一个独立的 package,与FB导入的guava包都在同一个工程内 - fbcore. datasource的类关系 ...

  4. [转]IP动态切换脚本

    因为公司办公室要设置固定IP才行,而家里的IP段和公司是不一样的,家里采用了DHCP机制,这样每次就得改IP设置,很是不方便,就写了这个脚本来动态切换,很流畅的说!WINXP,WIN7测试通过~嘿嘿~ ...

  5. sql 索引创建

    --格式 --CREATE [索引类型] INDEX 索引名称--ON 表名(列名)--WITH FILLFACTOR = 填充因子值0~100--GO ----------------------- ...

  6. Logstash学习1-logstash的简单例子

    如何安装ELK Redis插件 1. 安装好logstash后.2. 最简单的logstash.logstash -e 'input { stdin { } } output { stdout {} ...

  7. vim下正则表达式的非贪婪匹配

    贪婪模式是: .* 非贪婪模式是: .\{-}

  8. Auto push git tag

    CALL "C:\Program Files\TortoiseGit\bin\pageant.exe" "d:\CKey.ppk" set GIT_SSH=C: ...

  9. Spring之AOP面向切片

       一.理论基础: AOP(Aspectoriented programming)面向切片/服务的编程,在Spring中使用最多的是对事物的处理.而AOP这种思想在程序中很多地方可以使用的,比如说, ...

  10. linux之V4L2摄像头应用流程【转】

    本文转载自:http://blog.csdn.net/tommy_wxie/article/details/11486907 对于v4l2,上次是在调试收音机驱动的时候用过,其他也就只是用i2c配置一 ...