#ts01. 西游秘境大冒险

西游秘境大冒险

冒险前言

田老师带着信息学小队意外穿越到西游世界,想要平安回到现实课堂,必须凭借智慧闯过五重秘境。 每一关都藏着一道算法谜题,你需要运用单调栈、单调队列的知识破解机关,集齐五枚「归航符」,启动时空法阵重返校园。

注意事项

  1. 请使用 C++ 编写代码,保证时间复杂度与空间复杂度符合数据范围要求。

  2. 答案请严格按照输出格式输出,不要输出多余内容。


第 1 关・蟠桃园定序

题目描述

蟠桃园里的仙桃树排成一行,每棵树有一个灵力值。 对于每一棵树,你需要找到: 在它左边,离它最近、且灵力值严格小于它的树的灵力是多少。 如果左边不存在这样的树,输出 −1。

测试样例

输入:6 5 3 4 2 7 6

输出:-1 -1 3 -1 2 2

说明:第1棵树左边无树,输出-1;第2棵树左边5>3,输出-1;第3棵树左边最近严格小于4的是3,输出3,以此类推。

输入格式

第一行一个整数 n。 第二行 n 个整数,表示每棵树的灵力值。

输出格式

一行 n 个整数,表示每棵树对应的答案。

数据范围

1n2×1051 \le n \le 2\times 10^5

1灵力值1091 \le \text{灵力值} \le 10^9