#include <bits/stdc++.h>
using namespace std;
struct P {
  long long x, y;
  P(long long _x = 0, long long _y = 0) : x(_x), y(_y) {}
  void read() { scanf("%I64d%I64d", &x, &y); }
} p[510], q[510];
P operator-(P a, P b) { return P(a.x - b.x, a.y - b.y); }
long long operator*(P a, P b) { return a.x * b.y - a.y * b.x; }
long long X(P o, P a, P b) { return (a - o) * (b - o); }
int c[510][510];
int main() {
  int n, m, i, j, k, ans = 0;
  scanf("%d%d", &n, &m);
  for (i = 0; i < n; i++) p[i].read();
  for (i = 0; i < m; i++) q[i].read();
  for (i = 0; i < n; i++)
    for (j = 0; j < n; j++) {
      if (p[i].x >= p[j].x) continue;
      for (k = 0; k < m; k++)
        if (p[i].x <= q[k].x && q[k].x < p[j].x && X(p[i], p[j], q[k]) > 0)
          c[i][j]++;
      c[j][i] = -c[i][j];
    }
  for (i = 0; i < n; i++)
    for (j = i + 1; j < n; j++)
      for (k = j + 1; k < n; k++)
        if (c[i][j] + c[j][k] + c[k][i] == 0) ans++;
  printf("%d\n", ans);
  return 0;
}
