Cod sursa(job #205523)

Utilizator Adriana_SAdriana Sperlea Adriana_S Data 1 septembrie 2008 17:23:36
Problema Hvrays Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <stdio.h>
#include <vector>
#include <algorithm>

using namespace std;

const int N_MAX = 200010;

pair <pair <int, int>, int> v[N_MAX];

int cmp(pair <pair <int, int>, int> a, pair <pair <int, int>, int> b)
{
	if (a.first.first != b.first.first) return (a.first.first > b.first.first);
	else return (a.second > b.second);
}

int main()
{
	freopen("hvrays.in", "r", stdin);
#ifndef _SCREEN_
	freopen("hvrays.out", "w", stdout);
#endif

	int T, H, V, x, y;

	for (scanf("%d\n",  &T); T; T --) {
		scanf("%d %d\n", &H, &V);

		for (int i = 1; i <= H; i ++) {
			scanf("%d %d\n", &x, &y);
			v[i] = make_pair(make_pair(x, y), 0);
		}
		for (int i = H + 1; i <= H + V; i ++) {
			scanf("%d %d\n", &x, &y);
			v[i] = make_pair(make_pair(x, y), 1);
		}
		int N = H + V;
		sort(v + 1, v + N, cmp);

		int maxn = -1, maxb = -1, cate = 0;
		for (int i = 1; i <= N; i ++) {
			if (v[i].second) {
				if (v[i].first.second > maxn) maxn = v[i].first.second;
			} else {
				if (maxb < v[i].first.second) {
					cate ++;
					maxb = maxn;
				}
			}
		}
		printf("%d\n", cate);
	}	

	return 0;
}