【暑期多校联萌
来源:互联网 发布:往届生银行知乎 编辑:程序博客网 时间:2024/06/16 18:52
点击打开链接
问题 D: QAQ & ORZ 的签到题
时间限制: 1 Sec 内存限制: 128 MB提交: 834 解决: 204
题目描述
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
// 坑在如果相等的情况下输出最小的。
// 题意分析: i = 1 时 输出 1 1;
i = 2 时 分三种情况:
1 ) 如果 a[i] > a[i-1] : max = a[i] , pos1 = i ; min = a [i-1] , pos2 = i - 1;
2 ) 如果 a[i] < a[i-1] : max = a[i-1] , pos1 = i -1 ; min = a [i] , pos2 = i ;
3 ) 如果 a[i] == a[i-1] : max = min = a[i] , pos1 = pos2 = i;
i > 2 时 就与最大最小值比较
1 ) 即不大于最大值也不小于最大值就不更新最大最小值的位置,相等也不更新;
2 ) 大于最大值就更新最大值的位置;
3 ) 小于最小值就更新最小值的位置;
//代码如下:
#include <cstdio>const int maxn = 1e6 + 10;int a[maxn];int main(){int t;scanf ("%d",&t);while (t--) { int n,l,r; int max,min; scanf ("%d",&n); for (int i = 1 ; i <= n ; i++) { scanf ("%d",&a[i]); if (i == 1) printf ("%d %d\n",i,i); else if (i == 2) { if (a[i] < a[i-1]) { max = a[i-1]; l = i-1; min = a[i]; r = i; } else if (a[i] > a[i-1]) { max = a[i]; l = i; min = a[i-1]; r = i-1; } else l = r = i-1; printf ("%d %d\n",l,r); }else { if (a[i] <= max && a[i] >= min) printf ("%d %d\n",l,r); else if (a[i] > max) { max = a[i]; l = i; printf ("%d %d\n",l,r); }else if (a[i] < min) { min = a[i]; r = i; printf ("%d %d\n",l,r); } } } }return 0;}
- 【暑期多校联萌
- 【暑期多校联萌
- 【暑期多校联萌
- 【暑期多校联萌
- 暑期计划!
- 暑期学习计划
- 暑期总结
- 暑期计划
- 暑期目标
- 暑期计划
- 暑期书单
- 暑期总结
- 暑期规划
- 暑期任务
- 暑期总结
- 暑期小结
- 暑期总结
- 暑期小结
- C语言数据结构2——双向链表的实现
- 汇编中loop格式用法分析
- 146_IO_原理_分类_标准步骤
- Opencv并行访问图像像素
- 分数线划定
- 【暑期多校联萌
- 编译Android2.3出现的问题
- kafka发送自定义消息体(对象、数组)
- 内部变量
- java中String str="abc"与String str1=new String("abc")区别
- 幂表
- HPU-1412: QAQ & 君临天下 || 天行九歌 [区间]
- 问题D:QAQ&ORZ的签到题
- Lesson01_Unity基础介绍_part01工具与界面