Cod sursa(job #1150356)

Utilizator marta_diannaFII Filimon Marta Diana marta_dianna Data 22 martie 2014 21:42:02
Problema Regiuni Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include<cstdio>
#include<algorithm>
#define NMAX 1010
#define MOD 666013

using namespace std;

struct punct
{
    int x, y, regiune;
}a[NMAX];
struct dreapta
{
    int a, b, c;
}ec[NMAX];
int n, m;

void Citeste()
{
    int i, j;
    scanf("%d%d", &n, &m);
    for (i=1; i<=n; ++i) scanf("%d%d%d", &ec[i].a, &ec[i].b, &ec[i].c);
    for (j=1; j<=m; ++j)
    {
        scanf("%d%d", &a[j].x, &a[j].y);
        a[j].regiune=0;
    }
}

bool cmp(punct A, punct B)
{
    return A.regiune<B.regiune;
}

void Solve()
{
    int i, j, sg, nrm, nrp, val, nr=0;

    for (i=1; i<=n; ++i)
    {
        nrm=0; nrp=0;
        for (j=1; j<=m; ++j)
        {
            sg=ec[i].a*a[j].x+ec[i].b*a[j].y+ec[i].c;
            if (sg<0) a[j].regiune=(a[j].regiune*10+1)%MOD;
            else a[j].regiune=(a[j].regiune*10+2)%MOD;
        }
    }
    sort(a+1, a+m+1, cmp);
    for (i=1; i<=m; ++i)
        if (a[i].regiune!=a[i-1].regiune) ++nr;
    printf("%d\n", nr);
}

int main()
{
    freopen("regiuni.in", "r", stdin);
    freopen("regiuni.out", "w", stdout);
    Citeste();
    Solve();
    return 0;
}