#include <bits/stdc++.h>
using namespace std;
int main() {
  int n, m;
  cin >> n >> m;
  vector<int> x(n, 0), h(n, 0), l(n, 0), r(n, 0);
  for (int i = 0; i < n; ++i) cin >> x[i] >> h[i] >> l[i] >> r[i];
  vector<int> xM(m, 0), v(m, 0);
  vector<pair<int, int>> all;
  for (int i = 0; i < m; ++i) {
    cin >> xM[i] >> v[i];
    all.push_back(make_pair(xM[i], v[i]));
  }
  sort(all.begin(), all.end());
  vector<double> sum(m + 5, 0);
  auto cmp = [](pair<int, int> A, pair<int, int> B) {
    if (A.first == B.first) return A.second < B.second;
    return A.first < B.first;
  };
  for (int i = 0; i < n; ++i) {
    auto startRight =
        upper_bound(all.begin(), all.end(), make_pair(x[i], 1e9), cmp) -
        all.begin();
    auto endRight =
        upper_bound(all.begin(), all.end(), make_pair(x[i] + h[i], 1e9), cmp) -
        all.begin();
    endRight--;
    double rightProb = 0;
    if (r[i] != 100)
      rightProb = log((100 - r[i]) / 100.0);
    else
      rightProb = -1e9;
    sum[startRight] += rightProb;
    sum[endRight + 1] -= rightProb;
    auto startLeft =
        lower_bound(all.begin(), all.end(), make_pair(x[i] - h[i], -1e9), cmp) -
        all.begin();
    auto endLeft =
        lower_bound(all.begin(), all.end(), make_pair(x[i] - 1, 1e9), cmp) -
        all.begin();
    double leftProb = 0;
    if (l[i] != 100)
      leftProb = log((100 - l[i]) / 100.0);
    else
      leftProb = -1e9;
    endLeft--;
    if (startLeft > endLeft) continue;
    sum[startLeft] += leftProb;
    sum[endLeft + 1] -= leftProb;
  }
  double now = 0, ans = 0;
  for (int i = 0; i < m; ++i) {
    now += sum[i];
    ans += exp(now) * all[i].second;
  }
  cout.precision(15);
  cout << ans << "\n";
}
