经典指数          
原因
2720
浏览数
0
收藏数
 

一条长l的笔直的街道上有n个路灯,若这条街的起点为0,终点为l,第i个路灯坐标为ai,每盏灯可以覆盖到的最远距离为d,为了照明需求,所有灯的灯光必须覆盖整条街,但是为了省电,要是这个d最小,请找到这个最小的d。 输入描述: 每组数据第一行两个整数n和l(n大于0小于等于1000,l小于等于1000000000大于0)。第二行有n个整数(均大于等于0小于等于l),为每盏灯的坐标,多个路灯可以在同一点。 输出描述: 输出答案,保留两位小数。 输入例子: 7 1515 5 3 7 9 14 0 输出例子: 2.50

     举报   纠错  
 
切换
1 个答案
/*(c/c++) 先对路灯坐标进行排序,然后求相邻路灯之间的最大间隔。需注意边界情况:路灯要照到边界, 那么它的照明距离应该为其到边界距离的二倍。输出结果要保留到小数点后2位。*/ #include #include #include #include using namespace std; int main() { int n; long l; vector v; int tmp; while(cin >> n >>l){ v.clear(); while(n--){ cin >> tmp; v.push_back(tmp); } sort(v.begin(),v.end()); long maxm=0; for(int i=0;imaxm) maxm = v[i+1]-v[i]; } int bianjie = max(2*(l-v[v.size()-1]),2*v[0]); if(maxm< bianjie) maxm = bianjie; printf("%.2f\n",maxm/2.0); } return 0; }
 
切换
撰写答案
扫描后移动端查看本题