Cod sursa(job #1151498)

Utilizator lianaliana tucar liana Data 24 martie 2014 10:32:25
Problema Regiuni Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include<stdio.h>
#include<algorithm>
using namespace std;
#define nmax 1005
#define mmax 1005
#define modulo 666013
#define modulo2 666019
struct pct{int x,y;};
struct ecuatie{int a, b, c;};
struct element{int a,b;};
int i, n, m, smn, j, rez;
element x[nmax];
pct v[nmax];
ecuatie ec[mmax];

void citire()
{
    scanf("%ld %ld",&n,&m);
    for (i=1;i<=n;i++)
        scanf("%ld %ld %ld",&ec[i].a,&ec[i].b,&ec[i].c);
    for (i=1;i<=m;i++)
        scanf("%ld %ld",&v[i].x,&v[i].y);
}

bool cmp(element a, element b)
{
    if (a.a!=b.a)
        return (a.a<b.a);
    return (a.b<b.b);
}

void rezolvare()
{
    for (i=1;i<=m;i++)
        for (j=1;j<=n;j++)
        {
            smn=ec[j].a*v[i].x+ec[j].b*v[i].y+ec[j].c;
            x[i].a=(x[i].a*2+(smn<0))%modulo;
            x[i].b=(x[i].b*2+(smn<0))%modulo2;
        }
    sort(x+1,x+1+m,cmp);
    for (i=2;i<=m;i++)
        rez+=((x[i].a!=x[i-1].a)|(x[i].b!=x[i-1].b));
}

int main()
{
    freopen("regiuni.in","r",stdin);
    freopen("regiuni.out","w",stdout);
    citire();
    rezolvare();
    printf("%ld",rez+1);
    return 0;
}