#define _CRT_SECURE_NO_DEPRECATE #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define mpair make_pair #define all(v) v.begin(),v.end() using namespace std; typedef long long ll; typedef long double ld; const ld epsylon = 1e-9; double get(double x, double y) { return fabs(x - y); } int main() { freopen("metro.in","r",stdin); freopen("metro.out", "w", stdout); int n; double k,l; cin >> l >> k >> n; vector a(n); for (int i =0;i> a[i]; } sort(all(a)); double ans = (a[0] * 0.5 + get(a[0], k)) * a[0]; ans += ((l - a.back())* 0.5 + get(a.back(), k)) * (l - a.back()); for (int i = 0; i + 1 < n; ++i) { ans += ((a[i+1] - a[i])*0.25 + get(a[i], k))*(a[i+1] - a[i])*0.5; ans += ((a[i+1] - a[i])*0.25 + get(a[i+1], k))*(a[i+1] - a[i])*0.5; } printf("%.6lf\n", ans / l); return 0; }