Pagini recente » Cod sursa (job #1908744) | Cod sursa (job #1229796) | Cod sursa (job #182847) | Cod sursa (job #687314) | Cod sursa (job #1774262)
#include <algorithm>
#include <fstream>
#include <string>
using namespace std;
ifstream fin("hvrays.in");
ofstream fout("hvrays.out");
const int nmax= 100000;
string buffer;
string::iterator buffer_it;
void read_int_nn( int &x ) {
for ( ; *buffer_it>'9' || *buffer_it<'0'; ++buffer_it ) ;
for ( x= 0; *buffer_it<='9' && *buffer_it>='0'; ++buffer_it ) {
x= x*10+*buffer_it-'0';
}
}
struct str {
int x, y;
};
str h[nmax+1], v[nmax+1];
bool cmp( str x, str y ) {
if ( x.x==y.x ) {
return x.y>y.y;
}
return x.x>y.x;
}
int main( ) {
getline( fin, buffer, (char)0 );
buffer_it= buffer.begin();
int t;
read_int_nn(t);
for ( int cnt= 1; cnt<=t; ++cnt ) {
int n, m;
read_int_nn(n), read_int_nn(m);
for ( int i= 1; i<=n; ++i ) {
read_int_nn(h[i].x), read_int_nn(h[i].y);
}
sort( h+1, h+n+1, cmp );
for ( int i= 1; i<=m; ++i ) {
read_int_nn(v[i].x), read_int_nn(v[i].y);
}
sort( v+1, v+n+1, cmp );
int sol= 0;
for ( int i= 1, j= 1, aux= 0; i<=n; ++i ) {
if ( aux<h[i].y || i==1 ) {
for ( ++sol; j<=m && h[i].x<=v[j].x; ++j ) {
if ( aux<v[j].y ) {
aux= v[j].y;
}
}
}
}
fout<<sol<<"\n";
}
return 0;
}