HPU1411-- QAQ & ORZ 的签到题
来源:互联网 发布:泽宇网络传媒有限公司 编辑:程序博客网 时间:2024/05/20 13:37
QAQ & ORZ 的签到题
点击打开链接
题目描述
QAQ 的好朋友 ORZ,最近在做一个选拔节目的评委,对于每位选手 ORZ 想知道在这个选手以及这位选手前面的的选手中,得分最高和最低的选手的序号分别是多少....
ORZ 找了 QAQ 帮忙,但是 QAQ 最近在追火星情报局....所以你可以帮助 QAQ 解决 ORZ 的问题吗?
输入
第一行一个数 T
($1 \leq T \leq 10$),表示 T
组测试数据
第二行一个数 n
($1 \leq n \leq 10^5$ ),表示有n
位选手
接下来 n
行,每行一个数 a
($1 \leq a \leq 10^8$),表示第i
位选手的得分,打分总是从第一位选手开始
输出
输出从 1 ~ n
位选手中 a[i]
,在 1 ~ i
之间的选手中得分最高和得分最低的选手的序号分别是多少。
如果得分相同则优先输出较小的序号。
样例输入
13123
样例输出
1 12 13 1
提示
来源
楚江枫
解题思路:本来自己是用sort快速排序写的,每输入一个数,进行依次排序,但是超时,因为sort排序这个太费时间啦,结束之后看的别人的代码,是通过比较每一个输入数字的大小从而记录它们的序号完成的,这样就不会超时啦,而且要注意,让输出的是序号,不是分数。
#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; //将md,mx初始化为1 for(int i = 1; i <= n; i++){ scanf("%lld",&a[i]); if(a[md] < a[i]) //比较大小 ,假设i等于2,此时md等于1,如果a[2]>a[1],则让md=2,这样 md = i; //总是把比较大的分数的序号赋予给md并存放到d[i]中,mx的原理也是这样 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]); //通过for循环将 d[i]和x[i]的值输出 } return 0; }
阅读全文
0 0
- HPU1411-- QAQ & ORZ 的签到题
- QAQ & ORZ 的签到题
- QAQ & ORZ 的签到题
- QAQ & ORZ 的签到题
- QAQ & ORZ 的签到题
- QAQ & ORZ 的签到题
- 问题D:QAQ&ORZ的签到题
- 1411: QAQ & ORZ 的签到题 [水题]
- 多校联萌(三)QAQ & ORZ 的签到题
- HPU-1411: QAQ & ORZ 的签到题 [水题]
- hpuoj【1411】QAQ & ORZ 的签到题【水题】
- HPU 弱校联萌3 【1411】 QAQ & ORZ 的签到题
- 【多校连萌三】问题 D: QAQ & ORZ 的签到题
- Hdu-1411-QAQ & ORZ 的签到题 [水题]【多校联萌】
- QAQ & ORZ 的签到题 (河南省多校联萌(三) 问题D)
- QAQ & ORZ 的签到题||多线联盟(三)D
- QAQ & ORZ
- 上午的计数题QAQ
- Hdu6113度度熊的01世界(2017"百度之星"程序设计大赛
- hdu 6109 数据分割 并查集缩点建边
- E
- 将字符串转换为与之对应的16进制字符串
- 8.12 总结
- HPU1411-- QAQ & ORZ 的签到题
- 整数奇偶排序
- hdu 6108小C的倍数问题(2017百度之星初赛一1001)
- 初探Java多线程
- TOP 10 开源的推荐系统简介
- 日记8/12
- HDU 4283 You Are the One (区间DP)
- C#对象初始化器的使用
- Google Xception Network