T4312 最大出栈顺序
2018-06-17 22:39:45来源:未知 阅读 ()
题目描述
给你一个栈和n个数,按照n个数的顺序入栈,你可以选择在任何时候将数
出栈,使得出栈的序列的字典序最大。
输入输出格式
输入格式:输入共2行。
第一行个整数n,表示入栈序列长度。
第二行包含n个整数,表示入栈序列。
输出格式:仅一行,共n个整数,表示你计算出的出栈序列。
输入输出样例
3 2 1 3
3 1 2
说明
对于100%的数据, 1 ≤ n≤ 10 6 , 所有读入的数字互不重复即一定是个排列。
1 #include <cstdio> 2 #include <stack> 3 using namespace std; 4 int const MAX = 1e6 + 2; 5 int cur[MAX], pos[MAX], num[MAX]; 6 stack <int> s; 7 int main() 8 { 9 int n; 10 scanf("%d",&n); 11 for(int i=0;i<n;i++) 12 scanf("%d", &num[i]); 13 for(int i=n;i>0;i--) 14 { 15 if(cur[i] > num[i - 1]) 16 { 17 cur[i - 1] = cur[i]; 18 pos[i - 1] = pos[i]; 19 } 20 else 21 { 22 cur[i - 1] = num[i - 1]; 23 pos[i - 1] = i - 1; 24 } 25 } 26 for(int j = 0, i = 0; i < n; i++) 27 { 28 if(s.empty() || s.top() < cur[j]) 29 { 30 for(int k = pos[j]; j <= k; j++) 31 s.push(num[j]); 32 } 33 if(i != n - 1) 34 { 35 printf("%d ", s.top()); 36 s.pop(); 37 } 38 else 39 printf("%d\n", s.top()); 40 } 41 }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- gcc/g++ 链接顺序注意事项 2020-04-20
- 数据结构之顺序表的实现 2020-04-06
- 顺序算法 2020-03-31
- C++ 实现带监视哨的顺序查找 2020-03-26
- C语言表结构(1) 2020-02-06
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash