B. Vanya and Lanterns
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
Vanya walks late at night along a straight street of length l, lit by n lanterns. Consider the coordinate system with the beginning of the street corresponding to the point 0, and its end corresponding to the point l. Then the i-th lantern is at the point ai. The lantern lights all points of the street that are at the distance of at most d from it, where d is some positive number, common for all lanterns.
Vanya wonders: what is the minimum light radius d should the lanterns have to light the whole street?
Input
The first line contains two integers n, l (1?≤?n?≤?1000, 1?≤?l?≤?109) ? the number of lanterns and the length of the street respectively.
The next line contains n integers ai (0?≤?ai?≤?l). Multiple lanterns can be located at the same point. The lanterns may be located at the ends of the street.
立即学习“前端免费学习笔记(深入)”;
Output
Print the minimum light radius d, needed to light the whole street. The answer will be considered correct if its absolute or relative error doesn't exceed 10?-?9.
Sample test(s)
input
7 1515 5 3 7 9 14 0
output
2.5000000000
input
2 52 5
output
2.0000000000
Note
Consider the second sample. At d?=?2 the first lantern will light the segment [0,?4] of the street, and the second lantern will light segment[3,?5]. Thus, the whole street will be lit.
分析:一个长l的街道,在一些指定点上会有一些灯笼,问灯笼最小照亮半径为多少可以照亮整条街。
处理下,相邻元素最大值,注意一下0 or L处没有灯笼的情况。
#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <vector>#include <queue>#include <stack>#include <cassert>#include <algorithm>#include <cmath>#include <set>#include <limits>#include <map>using namespace std;#define MIN(a, b) ((a) < (b) ? (a) : (b))#define MAX(a, b) ((a) > (b) ? (a) : (b))#define F(i, n) for(int (i)=0;(i)<(n);++(i))#define REP(i, s, t) for(int (i)=(s);(i)<=(t);++(i))#define UREP(i, s, t) for(int (i)=(s);(i)>=(t);--(i))#define REPOK(i, s, t, o) for(int (i)=(s);(i)<=(t) && (o);++(i))#define MEM0(addr) memset((addr), 0, sizeof((addr)))#define PI 3.1415926535897932384626433832795#define HALF_PI 1.5707963267948966192313216916398#define MAXN 100000#define MAXM 10000#define MOD 1000000007typedef long long LL;const double maxdouble = numeric_limits<double>::max();const double eps = 1e-10;const int INF = 0x7FFFFFFF;int a[1005];int main(){ int n,l; while(cin>>n>>l) { for(int i=0;i<n;i++) { cin>>a[i]; } sort(a,a+n); int ma = -1; for(int i=1;i<n;i++) { int tmp = a[i] - a[i-1]; ma = max(tmp,ma); } int x = 2*(a[0] - 0); int y = 2*(l - a[n-1]); ma = max(ma,x); ma = max(ma,y); double ans = (double) ma/2; printf("%.10lf\n",ans); }}
HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号