时间限制:1秒 空间限制:32768K 热度指数:21147
题目描述
一条长l的笔直的街道上有n个路灯,若这条街的起点为0,终点为l,第i个路灯坐标为ai,每盏灯可以覆盖到的最远距离为d,为了照明需求,所有灯的灯光必须覆盖整条街,但是为了省电,要是这个d最小,请找到这个最小的d。
输入描述:
每组数据第一行两个整数n和l(n大于0小于等于1000,l小于等于1000000000大于0)。第二行有n个整数(均大于等于0小于等于l),为每盏灯的坐标,多个路灯可以在同一点。
输出描述:
输出答案,保留两位小数。
输入例子:
7 15
15 5 3 7 9 14 0
输出例子:
2.50
1 #include <iostream> 2 #include <vector> 3 #include <algorithm> 4 5 using namespace std; 6 7 int main() 8 { 9 int n,l; 10 int local; 11 12 vector<int> v; 13 while(cin>>n>>l) 14 { 15 v.clear(); 16 while(n--) 17 { 18 cin>>local; 19 v.push_back(local); 20 21 } 22 sort(v.begin(),v.end()); 23 24 int max_dis=0; 25 for(int i=0;i<v.size()-1;++i) 26 { 27 if(max_dis<(v[i+1]-v[i])) 28 max_dis=v[i+1]-v[i]; 29 30 } 31 32 int bargin = max(2*(l-v[v.size()-1]),2*v[0]); 33 if(max_dis<bargin) 34 max_dis = bargin; 35 36 printf("%.2f ",max_dis/2.0); 37 } 38 return 0; 39 }