Подгруппы решались разными версиями полного перебора всех отрезков.
Давайте рассмотрим ключевой факт для решения. Предположим мы хотим проверить удовлетворяет ли весь массив искомому требованию. Если это так, то мы можем вывести весь массив как ответ. Иначе один из двух крайних элементов не удовлетворяет нашим требованиям. Из этого можно сделать вывод, что все отрезки содержащие элемент, который не удовлетворяет нашим требованиям будут также некорректными, потому что этот крайний элемент будет оставаться минимумом/максимумом.
Из факта выше следует алгоритм: давайте посмотрим на отрезок $$$[l; r]$$$, который изначально равен $$$[1; n]$$$. Если $$$a_l = \min(a_{l}, a_{l+1}, \ldots, a_{r})$$$ или $$$a_l = \max(a_l, a_{l + 1}, \ldots, a_r)$$$, то перейдем к отрезку $$$[l + 1; r]$$$. Также необходимо аналогичное рассуждения для $$$a_r$$$. Таким образом мы либо через сколько-то иттераций получим требуемый отрезок, либо получим $$$l == r$$$ и ответом будет $$$-1$$$.
Итоговая ассимптотика: $$$\mathcal{O}(n\log n)$$$ или $$$\mathcal(O)(n)$$$ в зависимости от реализации.