NC21545. 牛牛的朋友
描述
输入描述
第一行输入一个整数n (1 ≤ n ≤ 50),表示牛的数量
第二行输入n个数pi (-1e8 ≤ pi ≤ 1e8),表示每只牛的位置
第三行输入一个整数X (0 ≤ X ≤ 1e8)
输出描述
输出一个整数
示例1
输入:
3 -3 0 1 3
输出:
3
说明:
示例2
输入:
3 4 7 -7 5
输出:
4
说明:
示例3
输入:
2 -100000000 100000000 100000000
输出:
0
示例4
输入:
9 3 7 4 6 -10 7 10 9 -5 7
输出:
7
示例5
输入:
4 -4 0 4 0 4
输出:
4
示例6
输入:
1 7 0
输出:
0
C++ 解法, 执行用时: 4ms, 内存消耗: 472K, 提交时间: 2022-07-10 15:53:39
#include<bits/stdc++.h> using namespace std; int n,a[51],x; int main() { cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; cin>>x; sort(a+1,a+n+1); int m=a[n]-a[1]; for(int i=1;i<n;i++) m=min(m,(max(a[n]-x,a[i]+x)-min(a[1]+x,a[i+1]-x))); cout<<m; return 0; }
Python3(3.9) 解法, 执行用时: 25ms, 内存消耗: 2972K, 提交时间: 2020-12-17 17:33:28
n=int(input()) p=list(map(int,input().split())) x=int(input()) p.sort() left,right=p[0],p[n-1] ans=right-left for i in range(n-1): left=min(p[0]+x,p[i+1]-x) right=max(p[n-1]-x,p[i]+x) ans=min(ans,right-left) print(ans)