#include <bits/stdc++.h>
using namespace std;
vector<pair<pair<int, int>, int> > ls;
vector<pair<int, int> > ts;
priority_queue<pair<int, int>, vector<pair<int, int> >,
               greater<pair<int, int> > >
    pq;
double xx = 0;
int cc = 0;
void mLN(int x) {
  if (x == 0)
    cc++;
  else
    xx += log(x / 100.0);
}
void dLN(int x) {
  if (x == 0)
    cc--;
  else
    xx -= log(x / 100.0);
}
double EXP() { return cc ? 0 : exp(xx); }
int main() {
  int n, m, a, l, h, r;
  scanf("%d%d", &n, &m);
  for (int i = 0; i < n; ++i) {
    scanf("%d%d%d%d", &a, &h, &l, &r);
    ls.push_back(make_pair(make_pair(a - h, a - 1), 100 - l));
    ls.push_back(make_pair(make_pair(a + 1, a + h), 100 - r));
  }
  sort(ls.begin(), ls.end());
  ts.resize(m);
  for (int i = 0; i < m; ++i) scanf("%d%d", &ts[i].first, &ts[i].second);
  sort(ts.begin(), ts.end());
  double b = 0;
  n <<= 1;
  for (int i = 0, j = 0; i < m; ++i) {
    for (; j < n && ls[j].first.first <= ts[i].first; ++j) {
      pq.push(make_pair(ls[j].first.second, ls[j].second));
      mLN(ls[j].second);
    }
    for (; pq.size() && pq.top().first < ts[i].first; pq.pop())
      dLN(pq.top().second);
    b += EXP() * ts[i].second;
  }
  printf("%.9lf", fabs(b));
  return 0;
}
