#include <bits/stdc++.h>
using namespace std;
long long A[100010];
long long H[100010];
long double L[100010];
long double R[100010];
struct shroom {
  long long b, z;
  bool operator<(const shroom& other) const {
    if (b < other.b) return true;
    ;
    if (b > other.b) return false;
    return false;
  }
};
shroom S[10010];
int sa[10010];
bool cmpf(const int& a, const int& b) { return S[a] < S[b]; }
long double T[4 * 10010];
long double init(int a, int b, int i) {
  assert(a <= b);
  T[i] = 1.0l;
  if (a == b) {
    return T[i];
  }
  int mid = (a + b) / 2;
  long double v1 = init(a, mid, 2 * i + 1);
  long double v2 = init(mid + 1, b, 2 * i + 2);
  return T[i];
}
long double update(int low, int high, long double val, int a, int b, int i) {
  assert(0.l <= val && val <= 1.0l);
  if (low > high) return T[i];
  if (a > high || b < low) return T[i];
  if (low <= a && b <= high) {
    T[i] *= val;
    return T[i];
  }
  int mid = (a + b) / 2;
  long double v1 = update(low, high, val, a, mid, 2 * i + 1);
  long double v2 = update(low, high, val, mid + 1, b, 2 * i + 2);
  return T[i];
}
long double get_prob(int idx, int a, int b, int i) {
  if (a > idx || b < idx) return 0.0;
  if (a == b) {
    return T[i];
  }
  int mid = (a + b) / 2;
  long double v1 = get_prob(idx, a, mid, 2 * i + 1);
  long double v2 = get_prob(idx, mid + 1, b, 2 * i + 2);
  return T[i] * (v1 + v2);
}
int main() {
  int N, M;
  cin >> N >> M;
  for (int i = 0; i < N; i++) {
    cin >> A[i] >> H[i] >> L[i] >> R[i];
    L[i] /= 100.l;
    R[i] /= 100.l;
  }
  for (int j = 0; j < M; j++) {
    long long b, z;
    cin >> b >> z;
    S[j].b = b;
    S[j].z = z;
  }
  sort(S, S + M);
  for (int j = 0; j < M; j++) sa[j] = S[j].b;
  init(0, M, 0);
  for (int i = 0; i < N; i++) {
    int low = (lower_bound(sa, sa + M, A[i] - H[i]) - sa);
    int me = (lower_bound(sa, sa + M, A[i]) - sa);
    update(low, me - 1, (1. - L[i]), 0, M, 0);
    me = (upper_bound(sa, sa + M, A[i]) - sa);
    int high = (upper_bound(sa, sa + M, A[i] + H[i]) - sa - 1);
    update(me, high, 1. - R[i], 0, M, 0);
  }
  long double ans = 0.;
  for (int j = 0; j < M; j++) {
    long double v1 = get_prob(j, 0, M, 0);
    ans += v1 * S[j].z;
  }
  cout << fixed << setprecision(9) << ans << endl;
}
