#include <bits/stdc++.h>
using namespace std;
const int maxi = 1e6 + 10;
int n, m;
int a[maxi], h[maxi], l[maxi], r[maxi];
pair<int, int> b[maxi];
long double d1[maxi], d2[maxi];
int mrtvi[maxi];
int nadji(int val) {
  int li = 0;
  int ri = m + 1;
  while (li < ri - 1) {
    int mid = li + ri >> 1;
    if (b[mid].first <= val)
      li = mid;
    else
      ri = mid;
  }
  return li;
}
int main() {
  cin >> n >> m;
  for (int i = 1; i <= n; i++) scanf("%d%d%d%d", &a[i], &h[i], &l[i], &r[i]);
  for (int i = 1; i <= m; i++) scanf("%d%d", &b[i].first, &b[i].second);
  sort(b + 1, b + m + 1);
  for (int i = 0; i <= m + 1; i++) {
    d1[i] = 1;
    d2[i] = 1;
  }
  for (int i = 1; i <= n; i++)
    if (l[i] == 100 || r[i] == 100)
      continue;
    else {
      int li = nadji(a[i]) + 1;
      int ri = nadji(a[i] + h[i]);
      if (li <= ri) {
        d2[li] *= (100.00 - r[i]) / 100.00;
        d2[ri + 1] *= 100.00 / (100.00 - r[i]);
      }
      li = nadji(a[i] - 1);
      ri = nadji(a[i] - h[i] - 1) + 1;
      if (ri <= li) {
        d1[li] *= (100.00 - l[i]) / 100.00;
        d1[ri - 1] *= 100.00 / (100.00 - l[i]);
      }
    }
  for (int i = 1; i <= n; i++)
    if (l[i] == 100) {
      int li = nadji(a[i] - 1);
      int ri = nadji(a[i] - h[i] - 1) + 1;
      if (ri <= li) {
        mrtvi[li + 1]--;
        mrtvi[ri]++;
      }
    } else if (r[i] == 100) {
      int li = nadji(a[i]) + 1;
      int ri = nadji(a[i] + h[i]);
      if (li <= ri) {
        mrtvi[li]++;
        mrtvi[ri + 1]--;
      }
    }
  for (int i = 1; i <= m; i++) {
    mrtvi[i] += mrtvi[i - 1];
    if (mrtvi[i]) b[i].second = 0;
  }
  long double ans = 0;
  for (int i = m; i > 0; i--) d1[i] *= d1[i + 1];
  for (int i = 1; i <= m; i++) {
    d2[i] *= d2[i - 1];
    ans += b[i].second * (d1[i] * d2[i]);
  }
  printf("%.7Lf\n", ans);
  return 0;
}
