#include <stdio.h>
#include <stdlib.h>
int comp(const void *first, const void *second);
int lanterns[1024];
int main()
{
int n, l;
scanf("%d %d", &n, &l);
int i;
for(i=0; i<n; ++i)
{
scanf("%d", &lanterns[i]);
}
qsort(lanterns, n, sizeof(int), comp);
int max=0;
for(i=1; i<n; ++i)
{
if((lanterns[i]-lanterns[i-1])>max)
max=lanterns[i]-lanterns[i-1];
}
//printf("max=%d, lanterns[%d]-%d=%d, l-lanterns[%d]=%d\n", max, 0, 0, lanterns[0]-0, n-1, l-lanterns[n-1]);
if(((max/2.0)>(lanterns[0]-0))&&((max/2.0)>(l-lanterns[n-1])))
printf("%f\n", max/2.0);
else if((lanterns[0]-0)>=(l-lanterns[n-1]))
printf("%f\n", (lanterns[0]-0)/1.0);
else
printf("%f\n", (l-lanterns[n-1])/1.0);
return 0;
}
int comp(const void *first, const void *second)
{
return *(int*)first-*(int*)second;
}
@这道题输出格式只用'%f'即可,还有就是判断中间的距离与两边距离大小时,应该将中间最大距离除以2.0。如果中间最大距离除以2.0严格大于两边距离时,才能将其除以2.0输出。如果中间最大距离与两边距离中的任意一个相等,则取两边的距离,再判断两边距离中哪个是最大的,然后将最大的原值输出。
posted on
浙公网安备 33010602011771号