#include #include #include #include #include #include #include using namespace std; const int maxn = 50000; struct node { int s; int e; int v; }seg[maxn+5]; struct hashnode { int rv; int id; }index[maxn*2+5]; bool cmp(const hashnode &a, const hashnode &b) { return a.rv0; i-=lowbit(i)) { f[i] += d; } } inline void update(int l, int r, int d) { _update(l-1, -d); _update(r, d); } inline int getpt(int x, int n) { int i, s = 0; for (i=x; i<=n; i+=lowbit(i)) { s += f[i]; } return s; } int bs(int v, int s, int t) { int l=s-1, r=t+1, m, ans; while(l<=r) { m = (l+r)>>1; if (v<=index[m].rv) { ans = m; r = m-1; } else l = m+1; } return index[ans].id; } int main() { int t; int len; double amt; int n; int i, j; int a, b; int end; double ans; scanf("%d", &t); while(t--) { scanf("%d %lf", &len, &amt); scanf("%d", &n); index[1].rv = 0; index[2].rv = len; for (i=0,j=3; i1e-6; i++) { a = index[i+1].rv-index[i].rv; b = getpt(i, end); if (a*1.0>amt/b) { ans += amt/b; amt = 0; } else { ans += a; amt -= a*b; } } printf("%.2lf\n", ans); } return 0; }