#include #include #include using namespace std; double l,k; int n; double a[100002]; int main() { freopen("metro.in", "r", stdin); freopen("metro.out", "w", stdout); scanf("%lf%lf%d", &l, &k, &n); a[0]=-1000000; for(int i=1; i<=n; i++) scanf("%lf", &a[i]); if(n==1) { double res=max(l-a[1], a[1])/2; printf("%lf\n", res); return 0; } sort(a, a+n+1); int d=upper_bound(a, a+n, k)-a; //printf("upper_bound: %lf %lf\n", a[d-1], a[d]); double mi=min(fabs(k-a[d]), abs(a[d-1]-k)); double tmax=fabs(k-a[1])+max(a[1], (a[2]-a[1])/2); tmax=max(tmax, fabs(k-a[n])+max(l-a[n], (a[n]-a[n-1])/2)); for(int i=2; i