#L0761. 单调栈基础应用

单调栈基础应用

题目描述

给定一个长度为 nn 的正整数序列 a1,a2,,ana_1, a_2, \dots, a_n

定义函数 f(i)f(i) 表示序列中第 ii 个元素之后第一个严格大于 aia_i 的元素的下标。也就是说,f(i)=min{ji<jn,aj>ai}f(i) = \min\{j \mid i \lt j \le n,\, a_j \gt a_i\}。如果不存在这样的元素,则 f(i)=0f(i) = 0

请你求出 f(1),f(2),,f(n)f(1), f(2), \dots, f(n) 的值。

输入格式

第一行一个正整数 nn,表示序列长度。

第二行 nn 个正整数 a1,a2,,ana_1, a_2, \dots, a_n,表示给定的序列。

输出格式

一行 nn 个整数,依次表示 f(1),f(2),,f(n)f(1), f(2), \dots, f(n) 的值。

样例

5
1 4 2 3 5
2 5 4 5 0

提示

【数据规模与约定】

对于 30%30\% 的数据,n100n \le 100

对于 60%60\% 的数据,n5×103n \le 5 \times 10^3

对于 100%100\% 的数据,1n3×1061 \le n \le 3 \times 10^61ai1091 \le a_i \le 10^9

难度 普及
通过率
尝试 0
已通过 0
ID
1489
类型
传统题
Time Limit
1000ms
Memory Limit
125MiB
上传者