QAQ & ORZ 的签到题

来源:互联网 发布:大数据交易平台 编辑:程序博客网 时间:2024/06/05 10:47


题目描述

QAQ 的好朋友 ORZ,最近在做一个选拔节目的评委,对于每位选手 ORZ 想知道在这个选手以及这位选手前面的的选手中,得分最高和最低的选手的序号分别是多少....

ORZ 找了 QAQ 帮忙,但是 QAQ 最近在追火星情报局....所以你可以帮助 QAQ 解决 ORZ 的问题吗?

输入

第一行一个数 T  (1T101≤T≤10),表示 T 组测试数据

第二行一个数 n  (1n1051≤n≤105 ),表示有 n 位选手

接下来 n 行,每行一个数 a (1a1081≤a≤108),表示第 i 位选手的得分,打分总是从第一位选手开始

输出

输出从 1 ~ n 位选手中 a[i],在 1 ~ i 之间的选手中得分最高和得分最低的选手的序号分别是多少。

如果得分相同则优先输出较小的序号。

样例输入

13123

样例输出

1 12 13 1
#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>using namespace std;const int MAX = 1e5 + 10;typedef long long LL;int d[MAX],x[MAX],a[MAX];int main(){    int T,n;    scanf("%d",&T);    while(T--){        scanf("%d",&n);        LL md = 1,mx = 1;        for(int i = 1; i <= n; i++){            scanf("%lld",&a[i]);            if(a[md] < a[i]) md = i;            if(a[mx] > a[i]) mx = i;            d[i] = md,x[i] = mx;        }        for(int i = 1; i <= n; i++) printf("%d %d\n",d[i],x[i]);    }    return 0;}


原创粉丝点击