#include <bits/stdc++.h>
using namespace std;
const long double epsylon = 1e-9;
struct tree {
  int x;
  long double left;
  long double right;
};
bool operator<(const tree& x, const tree& y) { return x.x < y.x; }
struct interval {
  int from;
  int to;
  int prob;
};
const int open = 0;
const int mushroom = 1;
const int close = 2;
struct something {
  int what;
  int index;
  int x;
};
bool operator<(const something& a, const something& b) {
  if (a.x != b.x) {
    return a.x < b.x;
  }
  if (a.what != b.what) {
    return a.what < b.what;
  }
  return a.index < b.index;
}
struct gyba {
  int x;
  int power;
};
int cnts[101];
int main() {
  memset(cnts, 0, sizeof(cnts));
  int n, m;
  cin >> n >> m;
  vector<interval> ints;
  ints.reserve(n * 2);
  vector<something> a;
  a.reserve(n * 4 + m);
  int lv, rv;
  interval tempi;
  something temps;
  for (int i = 0; i < n; ++i) {
    int x, h;
    scanf("%d %d %d %d", &x, &h, &lv, &rv);
    tempi.from = x - h;
    tempi.to = x - 1;
    tempi.prob = (100 - lv);
    temps.x = x - h;
    temps.what = open;
    temps.index = (int)ints.size();
    a.push_back(temps);
    temps.x = x - 1;
    temps.what = close;
    a.push_back(temps);
    ints.push_back(tempi);
    tempi.from = x + 1;
    tempi.to = x + h;
    tempi.prob = (100 - rv);
    temps.x = x + 1;
    temps.what = open;
    temps.index = (int)ints.size();
    a.push_back(temps);
    temps.x = x + h;
    temps.what = close;
    temps.index = (int)ints.size();
    a.push_back(temps);
    ints.push_back(tempi);
  }
  vector<gyba> b(m);
  for (int i = 0; i < m; ++i) {
    scanf("%d %d", &b[i].x, &b[i].power);
    temps.x = b[i].x;
    temps.what = mushroom;
    temps.index = i;
    a.push_back(temps);
  }
  sort(a.begin(), a.end());
  long double prob = 1.0;
  long double res = 0.0;
  int nuli = 0;
  for (int i = 0; i < (int)a.size(); ++i) {
    if (a[i].what == open) {
      cnts[ints[a[i].index].prob]++;
    } else if (a[i].what == close) {
      cnts[ints[a[i].index].prob]--;
    } else {
      if (cnts[0] == 0) {
        long double temp = 1.0;
        for (int iter = 1; iter < 100; ++iter) {
          temp *= pow((long double)iter / 100.0, cnts[iter]);
        }
        res += temp * ((long double)b[a[i].index].power);
      }
    }
  }
  printf("%.9llf\n", res);
  return 0;
}
