#include <bits/stdc++.h>
using namespace std;
pair<long double, int> cur = {0, 0};
void add(long double prob) {
  if (1 - prob < 0.001) {
    cur.second++;
  } else {
    cur.first += logl(1 - prob);
  }
}
void sub(long double prob) {
  if (1 - prob < 0.001) {
    cur.second--;
  } else {
    cur.first -= logl(1 - prob);
  }
}
long double getVal() {
  if (cur.second) {
    return 0;
  }
  return expl(cur.first);
}
struct event {
  bool isKill;
  bool add;
  int xc;
  long double prob;
  long double Z;
};
bool cmp(event a, event b) {
  if (a.xc != b.xc) {
    return a.xc < b.xc;
  }
  return a.isKill > b.isKill;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int N, M;
  cin >> N >> M;
  vector<event> E;
  for (int i = 0; i < N; i++) {
    int a, h;
    long double l, r;
    cin >> a >> h >> l >> r;
    r /= 100.0;
    l /= 100.0;
    event x;
    x.isKill = 1;
    x.add = 1;
    x.xc = a - h;
    x.prob = l;
    E.push_back(x);
    x.isKill = 1;
    x.add = 0;
    x.xc = a;
    x.prob = l;
    E.push_back(x);
    x.isKill = 1;
    x.add = 0;
    x.xc = a + h + 1;
    x.prob = r;
    E.push_back(x);
    x.isKill = 1;
    x.add = 1;
    x.xc = a + 1;
    x.prob = r;
    E.push_back(x);
  }
  for (int i = 0; i < M; i++) {
    int b, z;
    cin >> b >> z;
    event x;
    x.isKill = 0;
    x.xc = b;
    x.Z = z;
    E.push_back(x);
  }
  long double ans = 0;
  sort(E.begin(), E.end(), cmp);
  for (auto u : E) {
    if (u.isKill) {
      if (u.add) {
        add(u.prob);
      } else {
        sub(u.prob);
      }
    } else {
      ans += u.Z * getVal();
    }
  }
  cout << fixed << setprecision(10) << ans << endl;
  return 0;
}
