#include <bits/stdc++.h>
using namespace std;
int c[1000000 + 5];
double tag[4000000 + 5];
int b[1000000 + 5];
double z[1000000 + 5];
map<long long, int> mapp;
int a[1000000 + 5];
int h[1000000 + 5];
double l[1000000 + 5];
double r[1000000 + 5];
inline int read() {
  int num = 0, flag = 1;
  char ch;
  do {
    ch = getchar();
    if (ch == '-') flag = -1;
  } while (ch < '0' || ch > '9');
  do {
    num = num * 10 + ch - '0';
    ch = getchar();
  } while (ch >= '0' && ch <= '9');
  return num * flag;
}
void build(int rt, int l, int r) {
  tag[rt] = 1.0;
  if (l == r) return;
  int mid = (l + r) >> 1;
  build(rt << 1, l, mid);
  build(rt << 1 | 1, mid + 1, r);
}
void pushdown(int rt) {
  if (tag[rt] != 1.0) {
    tag[rt << 1] *= tag[rt];
    tag[rt << 1 | 1] *= tag[rt];
    tag[rt] = 1.0;
    return;
  }
}
void update(int rt, int l, int r, int lft, int rgt, double qwq) {
  if (lft <= l && r <= rgt) {
    tag[rt] *= qwq;
    return;
  }
  pushdown(rt);
  int mid = (l + r) >> 1;
  if (lft <= mid) update(rt << 1, l, mid, lft, rgt, qwq);
  if (mid < rgt) update(rt << 1 | 1, mid + 1, r, lft, rgt, qwq);
}
double query(int rt, int l, int r, int pos) {
  if (l == r) return tag[rt];
  pushdown(rt);
  int mid = (l + r) >> 1;
  if (pos <= mid)
    return query(rt << 1, l, mid, pos);
  else
    return query(rt << 1 | 1, mid + 1, r, pos);
}
int main() {
  int n = read(), m = read(), tot = 0;
  for (int i = 1; i <= n; i++) {
    a[i] = read(), h[i] = read();
    scanf("%lf%lf", &l[i], &r[i]);
    c[++tot] = a[i] - 1;
    c[++tot] = a[i] + 1;
    c[++tot] = a[i] - h[i];
    c[++tot] = a[i] + h[i];
    l[i] /= 100.0;
    r[i] /= 100.0;
  }
  for (int i = 1; i <= m; i++)
    b[i] = read(), scanf("%lf", &z[i]), c[++tot] = b[i];
  sort(c + 1, c + tot + 1);
  int sz = unique(c + 1, c + tot + 1) - c - 1;
  for (int i = 1; i <= tot; i++) {
    mapp[c[i]] = lower_bound(c + 1, c + sz + 1, c[i]) - c;
  }
  build(1, 1, sz);
  for (int i = 1; i <= n; i++) {
    update(1, 1, sz, mapp[a[i] + 1], mapp[a[i] + h[i]], 1.0 - r[i]);
    update(1, 1, sz, mapp[a[i] - h[i]], mapp[a[i] - 1], 1.0 - l[i]);
  }
  double ans = 0.0;
  for (int i = 1; i <= m; i++) {
    ans += query(1, 1, sz, mapp[b[i]]) * z[i];
  }
  printf("%lf\n", ans);
  return 0;
}
