【YBTOJ进阶训练指导】出栈序列【模拟】【贪心】
作者:互联网
思路:
字典序最大,所以直接贪心每次出栈的是最大
c o d e code code
#include<iostream>
#include<cstdio>
using namespace std;
int n;
int a[1010100], maxx[1010100], stack[1010100], ans[1010100], top1, top2;
int main()
{
scanf("%d", &n);
for(int i=1; i<=n; i++)
scanf("%d", &a[i]);
for(int i=n; i>=1; i--)
maxx[i]=max(a[i], maxx[i+1]);
for(int i=1; i<=n; i++)
{
stack[++top1]=a[i];
while(stack[top1]>maxx[i+1])
ans[++top2]=stack[top1--];
}
while(top1)
ans[++top2]=stack[top1--];
for(int i=1; i<=top2; i++)
printf("%d ", ans[i]);
return 0;
}
标签:maxx,出栈,进阶,1010100,int,YBTOJ,top2,top1,stack 来源: https://blog.csdn.net/liuziha/article/details/122829793