最大间隔
给定一个递增序列,a
1 <a
2 <...<a
n 。定义这个序列的最大间隔为d=max{a
i+1 - a
i }(1≤i<n),现在要从a
2 ,a
3 ..a
n-1 中删除一个元素。问剩余序列的最大间隔最小是多少?
输入描述:
第一行,一个正整数n(1<=n<=100),序列长度;接下来n个小于1000的正整数,表示一个递增序列。
输出描述:
输出答案。
输入例子:
5 1 2 3 7 8
输出例子:
4
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int fun(int n){
if(n < 3)
return 0;
vector<int> nums;
int Max = -1;
int tmp;
cin>>tmp;
nums.push_back(tmp);
for(int i=1; i<n; i++){
cin>>tmp;
Max = max(Max, tmp - nums.back());
nums.push_back(tmp);
}
if(n == 3)
return nums[2] - nums[0];
//if(n == 4)
// if( nums[1]-nums[0] != Max && nums[3]-nums[2] != Max )
// Max = max(nums[1]-nums[0], nums[3]-nums[2]);
int Min = 0x7FFFFFFF;
for(int i=0; i<=n-3; i++)
Min = min(Min, nums[i+2] - nums[i]);
return max(Min, Max);
}
int main(){
int n;
while(cin>>n){
int res = fun(n);
cout<<res<<endl;
}
return 0;
}