/* -*- coding: utf-8 -*- * * 2422.cc: No.2422 regisys? - yukicoder */ #include #include #include #include #include using namespace std; /* constant */ const int MAX_N = 200000; const int MAX_M = 200000; /* typedef */ typedef vector vi; typedef pair pii; typedef multiset msi; /* global variables */ int as[MAX_N], bs[MAX_N]; pii ps[MAX_N]; vi tcs[2]; /* subroutines */ /* main */ int main() { int n, m; scanf("%d%d", &n, &m); for (int i = 0; i < n; i++) scanf("%d", as + i); for (int i = 0; i < n; i++) scanf("%d", bs + i); for (int i = 0; i < n; i++) ps[i] = pii(as[i], bs[i]); sort(ps, ps + n); for (int i = 0; i < m; i++) { int ti, ci; scanf("%d%d", &ti, &ci); tcs[ti].push_back(ci); } vi &cs0 = tcs[0], &cs1 = tcs[1]; sort(cs0.begin(), cs0.end()); sort(cs1.begin(), cs1.end()); msi bcs; int s = 0, k = 0; for (auto c0: cs0) { while (k < n && ps[k].first <= c0) bcs.insert(ps[k++].second); if (! bcs.empty()) { s++; auto sit = bcs.end(); bcs.erase(--sit); } } while (k < n) bcs.insert(ps[k++].second); for (auto c1: cs1) { auto sit = bcs.upper_bound(c1); if (sit != bcs.begin()) { s++; bcs.erase(--sit); } } printf("%d\n", n - s); return 0; }