Pagini recente » Cod sursa (job #299931) | Cod sursa (job #755058) | Diferente pentru autumn-warmup-2007/solutii/runda-2 intre reviziile 56 si 40 | Cod sursa (job #238744) | Cod sursa (job #341757)
Cod sursa(job #341757)
#include <algorithm>
#include <stdio.h>
#define MAX 100010
#define x first
#define y second
using namespace std;
pair <int, int> hor[MAX], ver[MAX];
int t, h, v;
inline bool cmp(const pair <int, int> &a, const pair <int, int> &b)
{
if (a.y == b.y)
return (a.x > b.x);
return (a.y > b.y);
}
int main()
{
freopen("hvrays.in", "r", stdin);
freopen("hvrays.out", "w", stdout);
for (scanf("%d\n", &t); t; t--)
{
scanf("%d %d\n", &h, &v);
for (int i = 1; i <= h; i++)
scanf("%d %d", &hor[i].x, &hor[i].y);
for (int i = 1; i <= v; i++)
scanf("%d %d", &ver[i].x, &ver[i].y);
sort(hor + 1, hor + 1 + h, cmp);
sort(ver + 1, ver + 1 + v, cmp);
int sel = 0, maxX = 0;
for (int rmh = 1, rmv = 1; rmh <= v; sel++)
{
int primGs = hor[rmh].y;
for (; rmv <= h && ver[rmv].y >= primGs; rmv++)
maxX = max(maxX, ver[rmv].x);
for (; rmh <= v && hor[rmh].x <= maxX; rmh++);
}
printf("%d\n", sel);
}
fclose(stdin);
fclose(stdout);
return 0;
}