//#define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include using namespace std; int d, n, m; vector daysSkipped; vector< pair > scutiri; bool cmp(pair A, pair B) { if (A.first < B.first) return true; if (A.first == B.first && A.second < B.second) return true; return false; } int main() { //freopen("input.in", "r", stdin); //freopen("output.out", "w", stdout); cin >> d >> n >> m; int x,y; for (int i = 0; i < n; ++i) { cin >> x; daysSkipped.push_back(x); } sort(daysSkipped.begin(), daysSkipped.end()); for (int i = 0; i < m; ++i) { cin >> x >> y; scutiri.push_back(make_pair(x, y)); } sort(scutiri.begin(), scutiri.end(), cmp); int k = 0; int j = 0; int sol = 0; int maxim = 0; int poz; while (k < n) { maxim = 0; while (j < m && scutiri[j].first <= daysSkipped[k]) { if (scutiri[j].second >= maxim) { maxim = scutiri[j].second; poz = j; } j++; } sol++; while (k < n && daysSkipped[k] <= scutiri[poz].second) k++; while (j < m && scutiri[j].first <= scutiri[poz].second) j++; } cout << sol << "\n"; }