Cod sursa(job #2281527)

Utilizator AlexandruabcdeDobleaga Alexandru Alexandruabcde Data 12 noiembrie 2018 14:01:24
Problema Regiuni Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.35 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f ("regiuni.in");
ofstream g ("regiuni.out");

struct gigel
{
    int a, b, c;
};

struct nod
{
    int x, y;
};

struct per
{
    int sus, jos;
};

nod v[1005];
gigel dr[1005];
per nr[1005];

int n, m, sol;

bool cmp (per a, per b)
{
    if (a.sus > b.sus) return false;

    if (a.sus == b.sus && a.jos > b.jos) return false;

    return true;
}

int main()
{
    f >> n >> m;

    for (int i = 1; i <= n; i++)
    {
        f >> dr[i].a >> dr[i].b >> dr[i].c;
    }

    for (int i = 1; i <= m; i++)
    {
        f >> v[i].x >> v[i].y;
    }

    for (int i = 1; i <= m; i++)
    {
        for (int j = 1; j <= n; j++)
        {
            if (dr[j].a * v[i].x + dr[j].b * v[i].y + dr[j].c > 0) ///punctul se afla deasupra dreptei
            {
                nr[i].sus++;
            }
            else ///punctul se afla dedesuptul dreptei
            {
                nr[i].jos++;
            }
        }
    }

    sort (nr + 1, nr + m + 1, cmp);
    sol = 0;

    for (int i = 1; i <= m; i++)
    {
        per vasile = nr[i];
        i++;
        while (vasile.sus == nr[i].sus && vasile.jos == nr[i].jos && i <= m)
        {
            i++;
        }
        i--;
        sol++;
    }

    g << sol << '\n';
    return 0;
}