题目描述:
小O最近发现了N个从小到大升序排列的数字,他想找出这一组数字之中,差值最小的一对数字,并输出他们的差,并且找出相对的,差值最大的一对数字,并输出他们的差。
注意,如果在寻找差值最小的一对数字的过程中,有多对数字的差值相同,输出最先找到的一对。
输入格式:
第一行输入一个数N,表示一组数字的个数。
第二行输入N个数,表示这一组数字。
输出格式:
第一行输出最近的两个数字,以及他们的距离。
第二行输出最远的两个数字,以及他们的距离。
样例输入:
7 1 3 4 5 7 8 9
样例输出:
3 4 1 1 9 8
提示:
数据保证所有数字的大小都在int范围内,
且2<=n<=1000
时间限制: 1000ms
空间限制: 256MB
代码如下:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,m,p,s=0,b1,s1=10000,a[1001],b;
cin>>n;
for(int i=0;i<n;i++) {
cin>>a[i];
}
for(int i=n-1;i>=1;i--){
m=a[i]-a[i-1];
if(m<=s1){
s1=m;
b=i;
}
}
cout<<a[b-1]<<" "<<a[b]<<" "<<a[b]-a[b-1]<<endl;
cout<<a[0]<<" "<<a[n-1]<<" "<<a[n-1]-a[0];
/*for(int i=n-1;i>=1;i--){
for(int j=i-1;j>=0;j--){
p=a[i]-a[j];
if(p>=s){
s=p;
b1=i;
}
}
}
cout<<a[b1-1]<<" "<<a[b1]<<" "<<a[b1]-a[b1-1]<<endl;*/
return 0;
}