Codeforces 492B

#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输出。如果中间最大距离与两边距离中的任意一个相等,则取两边的距离,再判断两边距离中哪个是最大的,然后将最大的原值输出。

猜你喜欢

转载自www.cnblogs.com/commario/p/11800997.html