Cod sursa(job #801872)

Utilizator scipianusFMI Ciprian Olariu scipianus Data 25 octombrie 2012 12:20:30
Problema Regiuni Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include<fstream>
#include<cstdio>
using namespace std;
int n,m,sol;
int a[1010],b[1010],c[1010];
int hash[2][1010];
int MOD[2]={666013,666019};
int f[2]={7,11};

int main()
{
	int i,j,k,x,y;
	bool gasit;
	freopen("regiuni.in","r",stdin);
	scanf("%d %d",&n,&m);
	for(i=1;i<=n;i++)
		scanf("%d %d %d",a+i,b+i,c+i);
	for(i=1;i<=m;i++)
	{
		scanf("%d %d",&x,&y);
		for(j=1;j<=n;j++)
		{
			if(a[j]*x+b[j]*y+c[j]>0)
			{
				for(k=0;k<2;k++)
					hash[k][i]=(f[k]*hash[k][i]%MOD[k]+2)%MOD[k];
			}
			else
				for(k=0;k<2;k++)
					hash[k][i]=f[k]*hash[k][i]%MOD[k];
		}
	}
	
	for(i=1;i<=m;i++)
	{
		gasit=false;
		for(j=1;j<i && !gasit;j++)
		{
			if(hash[0][i]==hash[0][j] && hash[1][i]==hash[1][j])
				gasit=true;
		}
		if(!gasit)
			sol++;
	}
	
	freopen("regiuni.out","w",stdout);
	printf("%d\n",sol);
	return 0;
}