Cod sursa(job #785633)

Utilizator danalex97Dan H Alexandru danalex97 Data 9 septembrie 2012 14:31:41
Problema Regiuni Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <cstdio>
using namespace std;

const int Hsize = 1000000007;
const int Hsize2 = 1000000009;
const int Hsexion = 2;
const int Hsexion2 = 3;

const int Nmax = 1010 ;

short a[Nmax],b[Nmax],c[Nmax];
int Hash1[Nmax],Hash2[Nmax];

int N,M,A,B,Sol;

int main()
{
	FILE *f = fopen("regiuni.in", "r");

	int x,y,i,j;
	
    fscanf(f, "%d %d", &N, &M);
	for (i=1;i<=N;++i)
		fscanf(f, "%d %d %d", &a[i], &b[i] ,&c[i]);
	
	for (i=1;i<=M;++i)
	{
		fscanf(f, "%d %d", &x, &y);
		
		A=B=0;
		for (j=1;j<=N;++j)
			A=( A*Hsexion+( int(a[j])*x+int(b[j])*y+int(c[j]) > 0 ) ) % Hsize ,
			B=( B*Hsexion2+( int(a[j])*x+int(b[j])*y+int(c[j]) > 0 ) ) % Hsize ;
		
		Hash1[i]=A;
		Hash2[i]=B;
	}
	
	Sol=1;
    for (i=2;i<=M;++i)
    {
        for (j=1;j<i;++j)
            if ( Hash1[i]==Hash1[j] && Hash2[i]==Hash2[j] )
                break;
        if ( j==i )
            ++Sol;
    }

	fprintf(fopen("regiuni.out", "w"), "%d\n" , Sol );
}