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

// ConsoleApplication3.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include<iostream>
#include<vector>
#include<deque>
#include<iomanip>
#include<algorithm>
using namespace std;



int main()
{
    int n;
    long int l;
    while (cin >> n >> l)
    {
        vector<long int> lamps;
        for (int i = 0; i < n; i++)
        {
            long int t;
            cin >> t;
            lamps.push_back(t);
        }
        //排序
        for (int i = 0; i < n; i++)
        {
            for (int j = i + 1; j < n; j++)
            {
                if (lamps[i] > lamps[j])
                {
                    long temp = lamps[j];
                    lamps[j] = lamps[i];
                    lamps[i] = temp;
                }
            }
        }

        double  max = lamps[1] - lamps[0];
        for (int i = 1; i < n - 1; i++) //找到间间距最大的
        {
            if (lamps[i + 1] - lamps[i]>max)
            {
                max = lamps[i + 1] - lamps[i];
            }
        }
        max = max / 2;

        if (l - lamps[n - 1] > max)
        {
            max = l - lamps[n - 1];
        }
        if (lamps[0]  > max)
        {
            max = lamps[0];
        }


        cout << setiosflags(ios::fixed);
        cout << setprecision(2) << max << endl;


    }


    



    return 0;
}

转载于:https://www.cnblogs.com/wdan2016/p/6479354.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值