#include <bits/stdc++.h>
using namespace std;
long long n, t, q;
long long val[200005], shu[200005], add[200005];
double jia[200005], jian[200005], eqs = 1e-9, ans;
struct node {
  long long mx, mn;
} tt[1200005];
double ys(double a, double b, double c) {
  if (a < 0) return -1e9;
  if (a > b) return c / 2;
  return a * c / (a + b);
}
double jsmx(long long aa) {
  return ys(add[aa] + 1, shu[aa], val[aa]) - ys(add[aa], shu[aa], val[aa]);
}
double jsmn(long long aa) {
  return ys(add[aa], shu[aa], val[aa]) - ys(add[aa] - 1, shu[aa], val[aa]);
}
void up(long long rt) {
  if (jia[tt[rt << 1].mx] > jia[tt[rt << 1 | 1].mx])
    tt[rt].mx = tt[rt << 1].mx;
  else
    tt[rt].mx = tt[rt << 1 | 1].mx;
  if (jian[tt[rt << 1].mn] < jian[tt[rt << 1 | 1].mn])
    tt[rt].mn = tt[rt << 1].mn;
  else
    tt[rt].mn = tt[rt << 1 | 1].mn;
  return;
}
void bt(long long rt, long long ll, long long rr) {
  if (ll == rr) {
    tt[rt].mx = tt[rt].mn = ll;
    jia[ll] = jsmx(ll);
    jian[ll] = jsmn(ll);
    return;
  }
  long long mid = (ll + rr) >> 1;
  bt(rt << 1, ll, mid);
  bt(rt << 1 | 1, mid + 1, rr);
  up(rt);
  return;
}
void change(long long rt, long long ll, long long rr, long long dd,
            long long kk) {
  if (ll == rr) {
    ans -= ys(add[ll], shu[ll], val[ll]);
    add[ll] += kk;
    ans += ys(add[ll], shu[ll], val[ll]);
    jia[ll] = jsmx(ll);
    jian[ll] = jsmn(ll);
    return;
  }
  long long mid = (ll + rr) >> 1;
  if (dd <= mid)
    change(rt << 1, ll, mid, dd, kk);
  else if (dd > mid)
    change(rt << 1 | 1, mid + 1, rr, dd, kk);
  up(rt);
  return;
}
void change1(long long rt, long long ll, long long rr, long long dd,
             long long kk) {
  if (ll == rr) {
    ans -= ys(add[ll], shu[ll], val[ll]);
    shu[ll] += kk;
    ans += ys(add[ll], shu[ll], val[ll]);
    jia[ll] = jsmx(ll);
    jian[ll] = jsmn(ll);
    return;
  }
  long long mid = (ll + rr) >> 1;
  if (dd <= mid)
    change1(rt << 1, ll, mid, dd, kk);
  else if (dd > mid)
    change1(rt << 1 | 1, mid + 1, rr, dd, kk);
  up(rt);
  return;
}
int main() {
  scanf("%lld%lld%lld", &n, &t, &q);
  for (long long i = 1; i <= n; ++i) {
    scanf("%lld", &val[i]);
  }
  for (long long i = 1; i <= n; ++i) {
    scanf("%lld", &shu[i]);
  }
  bt(1, 1, n);
  while (t--) {
    change(1, 1, n, tt[1].mx, 1);
  }
  while (q--) {
    long long flag, x;
    scanf("%lld%lld", &flag, &x);
    if (flag == 1)
      change1(1, 1, n, x, 1);
    else
      change1(1, 1, n, x, -1);
    while (jian[tt[1].mn] < jia[tt[1].mx] - eqs) {
      change(1, 1, n, tt[1].mn, -1);
      change(1, 1, n, tt[1].mx, 1);
    }
    printf("%.9lf\n", ans);
  }
  return 0;
}
