#include <bits/stdc++.h>
using namespace std;
struct event {
  int pos, type, p;
  event(int pos = 0, int type = -1, int p = 0) : pos(pos), type(type), p(p) {}
  bool operator<(const event &e) const {
    if (pos == e.pos) return type < e.type;
    return pos < e.pos;
  }
};
const int maxE = 5e5 + 10;
event E[maxE];
int cnt[111];
double fpow(double a, int n) {
  double r = 1;
  for (; n; n = n >> 1) {
    if (n & 1) r *= a;
    a = a * a;
  }
  return r;
}
int main() {
  memset((cnt), (0), sizeof(cnt));
  int n, m, x, h, l, r, sz = 0, b, z;
  scanf("%d%d", &n, &m);
  for (int _n(n), i(0); i < _n; i++) {
    scanf("%d%d%d%d", &x, &h, &l, &r);
    l = 100 - l;
    r = 100 - r;
    E[sz++] = event(x - h, 0, l);
    E[sz++] = event(x, 0, -1 - l);
    E[sz++] = event(x + 1, 0, r);
    E[sz++] = event(x + h + 1, 0, -1 - r);
  }
  for (int _n(m), i(0); i < _n; i++) {
    scanf("%d%d", &b, &z);
    E[sz++] = event(b, z);
  }
  sort(E, E + sz);
  double expectation = 0, pro = 0;
  for (int _n(sz), i(0); i < _n; i++) {
    if (E[i].type == 0) {
      if (E[i].p >= 0) {
        cnt[E[i].p]++;
      } else
        cnt[-E[i].p - 1]--;
    } else {
      pro = 1;
      for (int _n(101), i(0); i < _n; i++) pro *= fpow(0.01 * i, cnt[i]);
      expectation += pro * E[i].type;
    }
  }
  printf("%.7f\n", expectation);
  return 0;
}
