Cod sursa(job #40425)

Utilizator skyelHighScore skyel Data 27 martie 2007 13:55:35
Problema Regiuni Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
#include <stdio.h>   
#include <string>
#define input "regiuni.in"
#define output "regiuni.out"
#define Nmax 1024
#define Mmax 1024

//using namespace std;

int main()
	{
	FILE *fin,*fout;
   freopen(input,"r",fin);
	freopen(output,"w",fout);
   long sec[Mmax][Mmax/29],n,m,z,j,s,q;
   int i,k,ok,t,a[Mmax],b[Mmax],c[Mmax],dx[Nmax],dy[Nmax],h;
	scanf("%d %d",&n,&m);
	k=0;
	for (i=0;i<n;i++)
	    fscanf(fin,"%d %d %d",&a[i],&b[i],&c[i]);
	for (i=0;i<m;i++)
	    fscanf(fin,"%d %d",dx[i],dy[i]);
   
   for(i=0;i<m;i++)
		{
		for(j=0;j<n;j++)
			{
			if (j%30==0)
				{
				sec[i][j/30]=z;
				z=0;
				}
			s=dx[i]*a[j]+dy[i]*b[j]+c[j];
			if(a[j]*b[j]!=0)
				{
				if(s>0)
					z+=1<<(j%30);
				}
			else
				{
				if(s<0)
					z+=1<<(j%30);
				}
			}
		sec[i][(n/30)+1]=z;
		z=0;
		ok=0;
      for (t=0;t<i;t++)
			 {
			 ok=0;
          for (q=0;q<=((n/30)+1);q++)
	   	     {
		        if (sec[i][q]!=sec[t][q])
	              {
                 ok=1;
                 t=i;
                 break;
                 }
                    
              }
          }     
      if (ok)
         k++;                        
      }
	fprintf(fout,"%d\n",k-1);
	return 0;
	}