Cod sursa(job #1774272)

Utilizator Athena99Anghel Anca Athena99 Data 8 octombrie 2016 19:17:44
Problema Hvrays Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.44 kb
#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+m+1, cmp );

        int sol= 0;
        for ( int i= 1, j= 1, aux= -1; i<=n; ++i ) {
            if ( aux<h[i].y ) {
                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;
}