描述
小王最近发现了N个从小到大升序排列的数字,他想找出这一组数字之中,差值最小的一对数字,并输出他们的差,并且找出相对的,差值最大的一对数字,并输出他们的差。
注意,如果在寻找差值最小的一对数字的过程中,有多对数字的差值相同,输出最先找到的一对。
输入描述
第一行输入一个数N,表示一组数字的个数。
第二行输入N个数,表示这一组数字。
输出描述
第一行输出最近的两个数字,以及他们的距离。
第二行输出最远的两个数字,以及他们的距离。
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| #include <bits/stdc++.h> using namespace std;
int main(){ int n; cin >> n; int in[n]; int min = INT_MAX,max = INT_MIN,sum = 0; int mi1,mi2,ma1,ma2; for(int i = 0;i<n;i++){ cin >> in[i]; } for(int i = 0;i<n;i++){ for(int j = 0;j<n;j++){ if(in[i] == in[j]){ continue; } if(abs(in[i]-in[j]) > max){ max = abs(in[i]-in[j]); ma1 = in[i]; ma2 = in[j]; } if(abs(in[i]-in[j]) < min){ min = abs(in[i]-in[j]); mi1 = in[i]; mi2 = in[j]; } } } cout << mi1 << " " << mi2 << " " << abs(mi1-mi2) << endl; cout << ma1 << " " << ma2 << " " << abs(ma1-ma2); return 0; }
|