Cod sursa(job #627107)

Utilizator vlad2901Vlad Berindei vlad2901 Data 29 octombrie 2011 00:05:14
Problema Regiuni Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <cstdio>
#include <algorithm>
#define NMAX 1000
#define MOD 32

using namespace std;

int N, M;
int a[NMAX], b[NMAX], c[NMAX];
int x, y;
int v;
int h[NMAX];

int main()
{
    int i, j, nr, key;

    freopen("regiuni.in", "r", stdin);
    freopen("regiuni.out", "w", stdout);

    scanf("%d %d", &N, &M);


    for(i=0;i<N;++i)
    {
        scanf("%d %d %d", &a[i], &b[i], &c[i]);
    }

    for(i=0;i<M;++i)
    {
        scanf("%d %d", &x, &y);
        key = 0;
        v = 0;

        for(j=0;j<N;++j)
        {
            if(a[j]*x + b[j]*y + c[j] > 0)
            {
                v = (v<<1) + 1;
            }
            else
            {
                v = v<<1;
            }
            if(j % MOD == MOD - 1)
            {
                key = (key * 7919 + v) % 150000001;
                v = 0;
            }
        }
        key = (key * 7919 + v) % 150000001;
        h[i] = key;
    }

    sort(h, h+M);
    nr = 1;
    for(i=1;i<M;++i)
    {
        if(h[i] != h[i-1])
        {
            ++nr;
        }
    }

    printf("%d\n", nr);



    return 0;
}