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 }