Cod sursa(job #1701470)

Utilizator sucureiSucureiRobert sucurei Data 13 mai 2016 10:27:47
Problema Hvrays Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.34 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 + 1, 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;
}