金块问题-排序-找最大最小
<center>
提交: 18 解决: 17
[提交][状态][讨论版] </center>
问题 D: 金块问题
时间限制: 1 Sec 内存限制: 64 MB提交: 18 解决: 17
[提交][状态][讨论版] </center>
题目描述
一个老板有一袋金块,里面有n块金子。每个月,老板会从袋子中拿出两个金块奖励两名期雇员。按规矩,最优秀的雇员将得到袋中最重的金块,排名第二的雇员将得到袋中最轻的金块。周期性地往袋中加入新的金块,那么每个月他都要找出最重和最轻的金块。假设有一台比较质量的仪器,我们希望用尽量少的比较次数找出最重和最轻的金块。
输入
第1行只有一个整数n(2≤n≤100000)。
第2行n个长整型范围内的整数,每个整数之间用一个空格隔开,表示每块金子的质量。
输出
输出两个用空格分开的整数,表示最重和最轻的金块的质量。
样例输入
8
10 8 2 4 5 3 9 1
样例输出
10 1
代码:
#include <iostream> #include <cstdio> using namespace std; int main() { long int n; long int maxx=0,minn=100000; long int a[100000]; while(~scanf("%ld",&n)&&n){ for(int i=0;i<n;i++){ scanf("%d",&a[i]); if(a[i]>=maxx){ maxx=a[i]; } if(a[i]<minn){ minn=a[i]; } } printf("%d %d",maxx,minn); } return 0; }