#include <bits/stdc++.h>
const long long MOD = 1e9 + 7;
const long long INF = 1011111111;
const long long LLINF = 1000111000111000111LL;
const long double EPS = 1e-10;
const long double PI = 3.14159265358979323;
using namespace std;
long long powm(long long base, long long exp, long long mod = MOD) {
  long long ans = 1;
  while (exp) {
    if (exp & 1) ans = (ans * base) % mod;
    exp >>= 1, base = (base * base) % mod;
  }
  return ans;
}
const long long N = 1000005;
map<long long, vector<long long>> mh, st, en;
vector<long long> interesting;
set<long long> tmp;
long long cnt[105];
long double powm(long double base, long long exp) {
  long double ret = 1;
  while (exp) {
    if (exp & 1) ret = ret * base;
    base = base * base;
    exp >>= 1;
  }
  return ret;
}
int32_t main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  long double ans = 0;
  long long n, m, a, h, l, r, b, z;
  cin >> n >> m;
  for (long long i = 1; i < n + 1; i++) {
    cin >> a >> h >> l >> r;
    st[a - h].push_back(100 - l);
    en[a].push_back(100 - l);
    st[a + 1].push_back(100 - r);
    en[a + h + 1].push_back(100 - r);
    tmp.insert(a - h);
    tmp.insert(a);
    tmp.insert(a + 1);
    tmp.insert(a + h + 1);
  }
  for (long long i = 1; i < m + 1; i++) {
    cin >> b >> z;
    mh[b].push_back(z);
    tmp.insert(b);
  }
  for (auto i : tmp) interesting.push_back(i);
  for (auto i : interesting) {
    if (en.find(i) != en.end())
      for (auto j : en[i]) cnt[j]--;
    if (st.find(i) != st.end())
      for (auto j : st[i]) cnt[j]++;
    if (mh.find(i) != mh.end()) {
      long double curr = 0;
      for (auto j : mh[i]) curr += j;
      for (long long j = 0; j < 101; j++)
        if (cnt[j]) curr *= powm(((long double)j) / 100, cnt[j]);
      ans += curr;
    }
  }
  cout << fixed << setprecision(10) << ans;
  return 0;
}
