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