Pagini recente » Cod sursa (job #1245392) | Cod sursa (job #486992) | Cod sursa (job #1019764) | Cod sursa (job #2750187) | Cod sursa (job #2007283)
#include <cstdio>
#include <fstream>
#include <algorithm>
#include <set>
#include <queue>
#define pii pair <int,int>
#define x first
#define y second
#define NMAX 100005
#define LMAX (1<<16)
using namespace std;
int t,n,m,rez,poz;
pii A[NMAX],B[NMAX];
char buff[LMAX];
int get_nr()
{
int x=0;
while (buff[poz]<'0' || buff[poz]>'9')
if (++poz==LMAX)
fread(buff,1,LMAX,stdin),poz=0;
while (buff[poz]>='0' && buff[poz]<='9')
{
x=x*10+buff[poz]-'0';
if (++poz==LMAX)
fread(buff,1,LMAX,stdin),poz=0;
}
return x;
}
void read()
{
n=get_nr(); m=get_nr();
int i;
for (i=1; i<=n; i++)
A[i].x=get_nr(),A[i].y=get_nr();
for (i=1; i<=m; i++)
B[i].x=get_nr(),B[i].y=get_nr();
}
inline int max(int x,int y)
{
return x>y ? x : y;
}
void solve()
{
sort(A+1,A+n+1);
sort(B+1,B+m+1);
rez=0;
int i,p=m+1,curr=-1,best=-1;
for (i=n; i>=1; i--)
{
while (p-1>0 && B[p-1].x>=A[i].x)
best=max(best,B[--p].y);
if (A[i].y>curr)
{
curr=best;
rez++;
}
}
}
int main()
{
freopen("hvrays.in","r",stdin);
freopen("hvrays.out","w",stdout);
fread(buff,1,LMAX,stdin);
t=get_nr();
while (t--)
{
read();
solve();
printf("%d\n",rez);
}
return 0;
}