C. Dora and Search

time limit per test

1 second

memory limit per test

256 megabytes

As you know, the girl Dora is always looking for something. This time she was given a permutation, and she wants to find such a subsegment of it that none of the elements at its ends is either the minimum or the maximum of the entire subsegment. More formally, you are asked to find the numbers l and r (1≤l≤r≤n) such that al≠min(al,al+1,...,ar), al≠max(al,al+1,...,ar) and ar≠min(al,al+1,...,ar), ar≠max(al,al+1,...,ar).

A permutation of length n is an array consisting of n distinct integers from 1 to n in any order. For example, 2,3,1,5,4 is a permutation, but 1,2,2 is not a permutation (2 occurs twice in the array) and 1,3,4 is also not a permutation (n=3, but 4 is present in the array).

Help Dora find such a subsegment, or tell her that such a subsegment does not exist.

Input

Each test consists of multiple test cases. The first line contains a single integer t (1≤t≤104) --- the number of test cases. Description of the test cases follows.

For each test case, the first line contains one integer n (1≤n≤2⋅105) --- the length of permutation.

The second line contains n distinct integers a1,a2,...,an (1≤ai≤n) --- the elements of permutation.

It is guarented that the sum of n over all test cases doesn't exceed 2⋅105.

Output

For each test case, output −1 if the desired subsegment does not exist.

Otherwise, output two indexes l,r such that al,al+1,...,ar satisfies all conditions.

If there are several solutions, then output any of them.

Example

Input

Copy

复制代码

4

3

1 2 3

4

2 1 4 3

7

1 3 2 4 6 5 7

6

2 3 6 5 4 1

Output

Copy

复制代码
-1
1 4
2 6
-1

Note

In the first and fourth test cases, it can be shown that there are no desired subsegments.

In the second test case, the subsegment 1,4 satisfies all the conditions, because max(a1,a2,a3,a4)=4,min(a1,a2,a3,a4)=1, as we see, all the conditions are met.

In the third test case, the subsegment 2,6 also satisfies all the conditions described.

解题说明:此题是一道模拟题,找出一对下标,使得对应数字符合要求。可以采用遍历算法,先假设l和r分别为数列头和数列尾,然后逐一判断,确保al和ar都不属于数列最大值和最小值。

cpp 复制代码
#include <stdio.h>

int a[200006];

int main(void) 
{
    int t;
    scanf("%d", &t);

    while (t--) 
    {
        int n;
        scanf("%d", &n);
  
        for (int i = 0; i < n; i++)
        {
            scanf("%d", &a[i]);
        }
        int l = 1, r = n;
        int smallest = 1;
        int largest = n;

        while (l < r) 
        {
            int flag = 1;

            if (a[l - 1] <= smallest)
            {
                l++;
                smallest++;
                flag = 0;
            }
            if (a[r - 1] <= smallest) 
            {
                r--;
                smallest++;
                flag = 0;
            }
            if (a[l - 1] >= largest)
            {
                l++;
                largest--;
                flag = 0;
            }
            if (a[r - 1] >= largest) 
            {
                r--;
                largest--;
                flag = 0;
            }
            if (flag)
            {
                break;
            }
        }

        if (r - l <= 1)
        {
            printf("-1\n");
        }
        else
        {
            printf("%d %d\n", l, r);
        }
    }

    return 0;
}
相关推荐
Drone_xjw17 小时前
Qt国际化多语言配置详解-入门到精通
开发语言·qt·命令模式
爱吃提升17 小时前
Python 多线程 threading + 多进程 multiprocessing 完整实操教程
开发语言·python
不会C语言的男孩17 小时前
C++ Primer 第18章:用于大型程序的工具
开发语言·c++
你疯了抱抱我17 小时前
【STM32】配置vscode+C工具链+Cortex-Debug开发环境,IC:STM32F411CEU6
c语言·vscode·stm32
星恒随风17 小时前
C++ 类和对象入门(三):拷贝构造、赋值运算符重载和深浅拷贝
开发语言·c++·笔记·学习
RickyWasYoung17 小时前
【Matlab】科研绘图配色-极简版
开发语言·matlab
凡人叶枫17 小时前
Effective C++ 条款03:尽可能使用 const
linux·开发语言·c++·嵌入式开发
光影62717 小时前
Python接口自动化测试----Requests库基础入门
开发语言·python·测试工具·pycharm·自动化
程序媛_17 小时前
【Python】连接PostgreSQL获取手机验证码
开发语言·python·postgresql
FFZero117 小时前
[mpv脚本系统] (五) C层系统调用的实现: mpv client通信机制
c语言·音视频