[编程题]路灯

题目描述

一条长l的笔直的街道上有n个路灯,若这条街的起点为0,终点为l,第i个路灯坐标为a i,每盏灯可以覆盖到的最远距离为d,为了照明需求,所有灯的灯光必须覆盖整条街,但是为了省电,要是这个d最小,请找到这个最小的d。

输入描述:
每组数据第一行两个整数n和l(n大于0小于等于1000,l小于等于1000000000大于0)。第二行有n个整数(均大于等于0小于等于l),为每盏灯的坐标,多个路灯可以在同一点。


输出描述:
输出答案,保留两位小数。

输入例子:
7 15
15 5 3 7 9 14 0

输出例子:
2.5
分析:这道题也是把题目读清楚,画个图就明白了。找出d的最小值,就是路灯间隔的一半的最大值,这样才能保证路灯直接全部连通,另外从起点到第一个路灯以及最后一个路灯到终点的距离也要加入比较,因为要求是照亮整个路段。
注意点:1.路灯的坐标会有重复
2.起点段和终点段要加入比较
3.输入数据的大小,选择什么样的类型来保存
4.输出保留小数点2位
代码:
#include 
#include 
#include 
#include 
using namespace std;
int main(){
    int n;
    long l;
    while(cin>>n>>l){
        vector v;
        int temp;
        for(int i=0;i>temp;
            v.push_back(temp);
        }
        sort(v.begin(),v.end());
        long dismax=0;
        long last=v[0];
        for(int i=1;i




你可能感兴趣的:([编程题]路灯)