zoukankan      html  css  js  c++  java
  • T4312 最大出栈顺序

    题目描述

    给你一个栈和n个数,按照n个数的顺序入栈,你可以选择在任何时候将数

    出栈,使得出栈的序列的字典序最大。

    输入输出格式

    输入格式:

    输入共2行。

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

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

    输出格式:

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

    输入输出样例

    输入样例#1:
    3
    2 1 3
    输出样例#1:
    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
    ", s.top());
    40     }
    41 }
  • 相关阅读:
    监控Nginx
    监控Tomcat
    监控memcache
    监控Redis
    14-SpringCloud Bus
    13-SpringCloud Config
    12-SpringCloud GateWay
    11-SpringCloud Hystrix
    10-SpringCloud OpenFeign
    09-SpringCloud Ribbon
  • 原文地址:https://www.cnblogs.com/zwfymqz/p/6820991.html
Copyright © 2011-2022 走看看