#include #include #include #include #include #include #include using namespace std; double get(const vector& s, int l, int r) { return s[r] - s[l - 1]; } int main() { int n; cin >> n; vector x(n); vector y(n); for (int i = 0; i < n; ++i) { cin >> x[i] >> y[i]; } vector x_sum(n + 1, 0); vector y_sum(n + 1, 0); vector xy_sum(n + 1, 0); vector xx_sum(n + 1, 0); for (int i = 0; i < n; ++i) { x_sum[i + 1] = x_sum[i] + x[i]; y_sum[i + 1] = y_sum[i] + y[i]; xy_sum[i + 1] = xy_sum[i] + x[i] * y[i]; xx_sum[i + 1] = xx_sum[i] + x[i] * x[i]; } int m; cin >> m; for (int j = 0; j < m; ++j) { int l; int r; double lambda; double x_j; cin >> l >> r >> lambda >> x_j; int cnt = r - l + 1; double sx = get(x_sum, l, r); double sy = get(y_sum, l, r); double sxx = get(xx_sum, l, r); double sxy = get(xy_sum, l, r); double K = (sxy - (sx * sy / (cnt + lambda))) / (sxx + lambda - (sx * sx / (cnt + lambda))); double B = (sy - K * sx) / (cnt + lambda); cout << setprecision(18) << K * x_j + B << endl; } return 0; }