#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:16777216")
using namespace std;
struct event {
  int x, t, m, p;
};
event A[500000];
int sz;
int per[1000];
int f(event a, event b) {
  if (a.x != b.x) return a.x < b.x;
  return a.t < b.t;
}
double fpow(double b, int k) {
  if (k == 0)
    return 1.0;
  else if (k % 2)
    return fpow(b, k - 1) * b;
  else
    return fpow(b, k / 2) * fpow(b, k / 2);
}
int main() {
  int N, M, a, h, l, r;
  event cur;
  scanf("%d%d", &N, &M);
  for (int i = 1; i <= N; i++) {
    scanf("%d%d%d%d", &a, &h, &l, &r);
    cur.x = a - h;
    cur.t = 1;
    cur.p = 100 - l;
    A[sz++] = cur;
    cur.x = a;
    cur.t = 2;
    cur.p = 100 - l;
    A[sz++] = cur;
    cur.x = a + 1;
    cur.t = 1;
    cur.p = 100 - r;
    A[sz++] = cur;
    cur.x = (a + h + 1);
    cur.t = 2;
    cur.p = 100 - r;
    A[sz++] = cur;
  }
  for (int i = 1; i <= M; i++) {
    scanf("%d%d", &a, &h);
    cur.x = a;
    cur.t = 3;
    cur.m = h;
    A[sz++] = cur;
  }
  sort(A, A + sz, f);
  double curp = 1.0, res = 0.0, prob;
  for (int i = 0; i < sz; i++) {
    if (A[i].t == 1)
      per[A[i].p]++;
    else if (A[i].t == 2)
      per[A[i].p]--;
    else {
      curp = A[i].m;
      prob = 0;
      for (int p = 100; p >= 1; p--)
        prob += ((log(1.0 * p) - log(100.0)) * (1.0 * per[p]));
      curp *= exp(prob);
      if (per[0]) curp = 0;
      res += curp;
    }
  }
  printf("%.10f\n", res);
  return 0;
}
