#include <bits/stdc++.h>
using namespace std;
const int MaxL = 1 << 17, MaxN = MaxL, NA = -1, MaxC = 0x3F3F3F3F;
const double eps = 1E-9;
int a[MaxL], h[MaxL];
double l[MaxL], r[MaxL];
double ll[MaxL], rr[MaxL];
int b[MaxN], z[MaxN];
int m, n;
int main(void) {
  int i, j, k, q, u;
  double p, res;
  while (scanf(" %d %d", &n, &m) != EOF) {
    assert(1 <= n && n <= MaxL);
    assert(1 <= m && m <= MaxN);
    vector<pair<int, int> > v;
    for (i = 1; i <= n; i++) {
      scanf(" %d %d %d %d", &a[i], &h[i], &j, &k);
      l[i] = j * 0.01;
      r[i] = k * 0.01;
      l[i] = 1.0 - l[i];
      r[i] = 1.0 - r[i];
      if (fabs(l[i]) < eps)
        l[i] = 0.0;
      else
        ll[i] = log(l[i]);
      if (fabs(r[i]) < eps)
        r[i] = 0.0;
      else
        rr[i] = log(r[i]);
      v.push_back(make_pair(a[i] - h[i], i + MaxL * 0));
      v.push_back(make_pair(a[i], i + MaxL * 1));
      v.push_back(make_pair(a[i], i + MaxL * 3));
      v.push_back(make_pair(a[i] + h[i], i + MaxL * 4));
    }
    for (j = 1; j <= m; j++) {
      scanf(" %d %d", &b[j], &z[j]);
      v.push_back(make_pair(b[j], j + MaxL * 2));
    }
    sort(v.begin(), v.end());
    res = 0.0;
    p = 0.0;
    q = 0;
    for (i = 0; i < (int)v.size(); i++) {
      k = v[i].second;
      u = k / MaxL;
      k %= MaxL;
      switch (u) {
        case 0:
          if (l[k])
            p += ll[k];
          else
            q++;
          break;
        case 1:
          if (l[k])
            p -= ll[k];
          else
            q--;
          break;
        case 2:
          if (!q && p > -100.0) res += z[k] * exp(p);
          break;
        case 3:
          if (r[k])
            p += rr[k];
          else
            q++;
          break;
        case 4:
          if (r[k])
            p -= rr[k];
          else
            q--;
          break;
        default:
          assert(false);
          break;
      }
    }
    printf("%.20lf\n", res);
  }
  return 0;
}
