A. Minimum Difficulty

题意:

有一个递增序列a,现在要去掉除了第一项和最后一项元素外的某一项,使新数列中相邻元素之差的最大值最小。

分析:

先求出原序列a中,相邻两项元素之差的最大值m。

枚举去掉ai,则新序列相邻元素差的最大值为max{ m, ai+1 - ai },然后记录最小值即可。

 1 #include <cstdio>
 2 #include <algorithm>
 3 using namespace std;
 4 
 5 const int maxn = 100 + 10;
 6 int a[maxn];
 7 
 8 int main(void)
 9 {
10     int n;
11     scanf("%d", &n);
12     for(int i = 0; i < n; ++i) scanf("%d", &a[i]);
13     int max1 = 0;
14     for(int i = 0; i < n-1; ++i) max1 = max(max1, a[i+1]-a[i]);
15 
16     int ans = 10000;
17     for(int i = 1; i < n-1; ++i) ans =min(ans, max(max1, a[i+1]-a[i-1]));
18 
19     printf("%d\n", ans);
20 
21     return 0;
22 }
代码君

相关文章: