#include <bits/stdc++.h>
using namespace std;
const int MAXN = 5e5 + 10;
int n, m;
int a[MAXN], b[MAXN], z[MAXN], h[MAXN], l[MAXN], r[MAXN], L[MAXN], R[MAXN],
    S[MAXN];
long double seg[MAXN * 4];
void add(long double val, int l, int r, int b = 0, int e = 4 * n + m + 2,
         int id = 1) {
  if (r <= b || e <= l) return;
  if (l <= b && e <= r) {
    seg[id] *= val;
    return;
  }
  int mid = (b + e) / 2;
  add(val, l, r, b, mid, id * 2), add(val, l, r, mid, e, id * 2 + 1);
}
long double get(int ind, int b = 0, int e = 4 * n + m + 2, int id = 1) {
  if (b + 1 == e) return seg[id];
  int mid = (b + e) / 2;
  if (ind < mid)
    return seg[id] * get(ind, b, mid, id * 2);
  else
    return seg[id] * get(ind, mid, e, id * 2 + 1);
}
void build(int b = 0, int e = 4 * n + m + 2, int id = 1) {
  seg[id] = 1;
  if (b + 1 == e) return;
  int mid = (b + e) / 2;
  build(b, mid, id * 2), build(mid, e, id * 2 + 1);
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> m;
  vector<int> vec;
  for (int i = 0; i < n; i++) {
    cin >> a[i] >> h[i] >> l[i] >> r[i];
    vec.push_back(a[i]), vec.push_back(a[i] - h[i]);
    vec.push_back(a[i] + 1), vec.push_back(a[i] + h[i] + 1);
  }
  for (int i = 0; i < m; i++) {
    cin >> b[i] >> z[i];
    vec.push_back(b[i]);
  }
  sort(vec.begin(), vec.end());
  vec.resize(unique(vec.begin(), vec.end()) - vec.begin());
  for (int i = 0; i < n; i++) {
    S[i] = lower_bound(vec.begin(), vec.end(), a[i] + 1) - vec.begin();
    L[i] = lower_bound(vec.begin(), vec.end(), a[i] - h[i]) - vec.begin();
    R[i] = lower_bound(vec.begin(), vec.end(), a[i] + h[i] + 1) - vec.begin();
    a[i] = lower_bound(vec.begin(), vec.end(), a[i]) - vec.begin();
  }
  for (int i = 0; i < m; i++)
    b[i] = lower_bound(vec.begin(), vec.end(), b[i]) - vec.begin();
  build();
  for (int i = 0; i < n; i++) {
    add((long double)(100 - l[i]) / (long double)100, L[i], a[i]);
    add((long double)(100 - r[i]) / (long double)100, S[i], R[i]);
  }
  long double res = 0;
  for (int i = 0; i < m; i++) res += (long double)1 * z[i] * get(b[i]);
  cout << fixed << setprecision(10) << res << endl;
  return 0;
}
