#include <bits/stdc++.h>
using namespace std;
int n, m;
vector<pair<int, int> > tr;
vector<pair<int, int> > mush;
bool cmp(pair<int, int> a, pair<int, int> b) { return a.first < b.first; }
int main() {
  tr.clear();
  mush.clear();
  int x, h, l, r;
  scanf("%d%d", &n, &m);
  for (int i = 0; i < n; i++) {
    scanf("%d%d%d%d", &x, &h, &l, &r);
    tr.push_back(make_pair(x - h, l));
    tr.push_back(make_pair(x, -l));
    tr.push_back(make_pair(x + 1, r));
    tr.push_back(make_pair(x + h + 1, -r));
  }
  for (int i = 0; i < m; i++) {
    scanf("%d%d", &x, &h);
    mush.push_back(make_pair(x, h));
  }
  sort(tr.begin(), tr.end());
  sort(mush.begin(), mush.end(), cmp);
  double ans = 0.0, p = 0.0;
  int j = 0, cnt = 0;
  for (int i = 0; i < (int)mush.size(); i++) {
    int idx = mush[i].first;
    int z = mush[i].second;
    while (j < tr.size() && idx >= tr[j].first) {
      int tmp = tr[j].second;
      if (tmp > 0) {
        if (tmp == 100)
          cnt++;
        else
          p += log(1.0 - double(tmp) / 100.0);
      }
      if (tmp < 0) {
        tmp *= -1;
        if (tmp == 100)
          cnt--;
        else
          p -= log(1.0 - double(tmp) / 100.0);
      }
      j++;
    }
    if (cnt == 0) ans += double(z) * exp(p);
  }
  printf("%.8f\n", ans);
  return 0;
}
