#include <bits/stdc++.h>
using namespace std;
struct Event {
  int t, type;
  double p;
  int magic;
  Event(int t, int type, double p, int magic)
      : t(t), type(type), p(p), magic(magic) {}
};
bool Comp(Event a, Event b) {
  if (a.t == b.t) return a.type < b.type;
  return a.t < b.t;
}
inline bool eq(double a, double b) { return fabs(a - b) < 1e-8; }
int n, m;
int a, h, pl, pr, magic;
vector<Event> ev;
int main() {
  scanf("%d %d", &n, &m);
  for (int i = 1; i <= n; ++i) {
    scanf("%d %d %d %d", &a, &h, &pl, &pr);
    pl = 100 - pl, pr = 100 - pr;
    ev.push_back(Event(a - h, 0, double(pl) / 100, 0));
    ev.push_back(Event(a - 1, 2, double(pl) / 100, 0));
    ev.push_back(Event(a + 1, 0, double(pr) / 100, 0));
    ev.push_back(Event(a + h, 2, double(pr) / 100, 0));
  }
  for (int i = 1; i <= m; ++i) {
    scanf("%d %d", &a, &magic);
    ev.push_back(Event(a, 1, 0, magic));
  }
  sort(ev.begin(), ev.end(), Comp);
  double curP = 0;
  double sol = 0;
  int c0 = 0;
  for (auto e : ev) {
    switch (e.type) {
      case 0:
        if (eq(e.p, 0))
          ++c0;
        else
          curP += log(e.p);
        break;
      case 1:
        if (c0 == 0) sol += exp(curP) * e.magic;
        break;
      case 2:
        if (eq(e.p, 0))
          --c0;
        else
          curP -= log(e.p);
        break;
      default:
        assert(1);
    }
  }
  printf("%.10f\n", sol);
  return 0;
}
