#include <bits/stdc++.h>
using namespace std;
const int maxn = 100 * 1000 + 10, maxm = 10 * 1000 + 10,
          INF = 1 * 1000 * 1000 * 1000 + 10;
pair<int, int> p[maxm];
long double sum[4 * maxm], l[maxn], r[maxn], data[4 * maxn];
int a[maxn], n, m, h[maxn], zero, L, R;
inline void push(int &x) {
  data[2 * x + 1] *= data[x];
  data[2 * x + 2] *= data[x];
  sum[2 * x + 1] *= data[x];
  sum[2 * x + 2] *= data[x];
  data[x] = 1;
}
void bld(int x, int &l, int &r) {
  data[x] = 1;
  if (r - l == 1) {
    sum[x] = p[l].second;
    return;
  }
  int mid = (l + r) / 2;
  bld(2 * x + 1, l, mid);
  bld(2 * x + 2, mid, r);
  sum[x] = sum[2 * x + 1] + sum[2 * x + 2];
}
void mul(int x, int &l, int &r, long double &val) {
  if (l >= R || L >= r) return;
  if (L <= l && r <= R) {
    sum[x] *= val;
    data[x] *= val;
    return;
  }
  int mid = (l + r) / 2;
  push(x);
  mul(2 * x + 1, l, mid, val);
  mul(2 * x + 2, mid, r, val);
  sum[x] = sum[2 * x + 1] + sum[2 * x + 2];
}
int main() {
  scanf("%d %d", &n, &m);
  for (int i = 0; i < n; i++) {
    scanf("%d %d %d %d", &a[i], &h[i], &L, &R);
    l[i] = ((long double)100 - L) / 100;
    r[i] = ((long double)100 - R) / 100;
  }
  for (int i = 0; i < m; i++) scanf("%d %d", &p[i].first, &p[i].second);
  sort(p, p + m);
  bld(zero, zero, m);
  for (int i = 0; i < n; i++) {
    L = lower_bound(p, p + m, make_pair(a[i] - h[i], 0)) - p;
    R = lower_bound(p, p + m, make_pair(a[i], 0)) - p;
    mul(zero, zero, m, l[i]);
    L = upper_bound(p, p + m, make_pair(a[i], INF)) - p;
    R = upper_bound(p, p + m, make_pair(a[i] + h[i], INF)) - p;
    mul(zero, zero, m, r[i]);
  }
  cout << setprecision(12) << fixed << sum[0];
  return 0;
}
