#include <bits/stdc++.h>
using namespace std;
int n, m;
int A[110000];
int H[110000];
int L[110000];
int R[110000];
pair<int, int> mush[110000];
pair<double, int> add[110000];
int main() {
  ios_base::sync_with_stdio(false);
  cin >> n >> m;
  for (int i = 0; i < (n); ++i) cin >> A[i] >> H[i] >> L[i] >> R[i];
  for (int i = 0; i < (m); ++i) cin >> mush[i].first >> mush[i].second;
  sort(mush, mush + m);
  for (int i = 0; i < (n); ++i) {
    pair<double, int> v(0., 0);
    if (L[i] == 100)
      v.second = 1;
    else
      v.first = log(1 - 1. * L[i] / 100);
    int p =
        lower_bound(mush, mush + m, make_pair(A[i] - H[i], -1000000000)) - mush;
    add[p].first += v.first;
    add[p].second += v.second;
    p = lower_bound(mush, mush + m, make_pair(A[i], -1000000000)) - mush;
    add[p].first -= v.first;
    add[p].second -= v.second;
    v = make_pair(0., 0);
    if (R[i] == 100)
      v.second = 1;
    else
      v.first = log(1 - 1. * R[i] / 100);
    p = lower_bound(mush, mush + m, make_pair(A[i], +1000000000)) - mush;
    add[p].first += v.first;
    add[p].second += v.second;
    p = lower_bound(mush, mush + m, make_pair(A[i] + H[i], +1000000000)) - mush;
    add[p].first -= v.first;
    add[p].second -= v.second;
  }
  double res = 0;
  double l = 0;
  int z = 0;
  for (int i = 0; i < (m); ++i) {
    l += add[i].first;
    z += add[i].second;
    if (z < 0) exit(3234);
    if (z == 0) res += mush[i].second * exp(l);
  }
  printf("%.15lf", res);
  return 0;
}
