U514939 ١١(❛ᴗ❛)【单调栈】-左右两侧第一小于等于值(存在重复情况)

题目描述

作为一个刚刚进入数据结构的学习者,为了减轻大家的负担,我们直接开始进入正题。 给定一个数组,数组内部存在重复项并且数据的大小都大于等于$ 0 $。 现在给你提出问题,直接回答每一个位置$ i $左侧小于等于$ a[i] $的第一个元素的下标以及每一个位置$i$ 右侧小于等于$a[i]$的第一个元素的下标。 如果找不到这样的位置,直接输出`-1`。

输入格式

第一行给定一个正整数$ n $。 第二行给定$ n $个大于等于$ 0 $的整数,整数之间用空格间隔。

输出格式

输出$n$行。 第$i$行包括两个整数,分别是左侧小于等于$ a[i] $的第一个元素的下标和右侧小于等于$ a[i] $的第一个元素的下标。 中间用空格间隔。找不到合法下标的直接输出$-1$。

说明/提示

| 测试点编号 | $n \leq$ | $a[i]$ | 特殊性质 | | ------------ | :----------: | :------------: | :------: | | $ 1\sim 10 $ | $10$ | $ 0\sim 10 $ | 无 | | $11 \sim 20$ | $10 ^ 3$ | $ 0\sim 1000 $ | 无 | | $21\sim 40$ | $5 * 10 ^ 5$ | $ 0\sim 10^9 $ | 无 |