Cod sursa(job #42418)

Utilizator wazupPricop Mircea wazup Data 29 martie 2007 10:18:40
Problema Regiuni Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <stdio.h>
struct dr { int a,b,c; };
dr drepte[1001];
char grupe[101][130],aux[130];
int k,x,y,gas;
int n,m,i,j,nr;
FILE *fin,*fout;

int strcmp(char a[],char b[])
  {
    int in=0;
    for (in=0;in<=129;in++)
      if (a[in]!=b[in])
	return 1;
    return 0;
  }

void setbit(char a[],int bt)
  {  int r=bt%8;
     int in=bt/8;
     a[in]|=1<<(8-r-1);
  }

int main()
{
fin=fopen("regiuni.in","rt");
fout=fopen("regiuni.out","wt");
fscanf(fin,"%d %d\n",&n,&m);
for (i=0;i<n;i++)
  fscanf(fin,"%d %d %d\n",&drepte[i].a,&drepte[i].b,&drepte[i].c);

for (i=0;i<m;i++)
   {  fscanf(fin,"%d %d\n",&x,&y);
      j=0;
      for (j=0;j<129;j++)
	aux[j]=0;
      nr=1;
      for (j=0;j<n;j++)
	 if (drepte[j].a*x+drepte[j].b*y+drepte[j].c>0)
	    setbit(aux,nr++);
      gas=0;
      for (j=0;j<k;j++)
	 if (strcmp(aux,grupe[j])==0)
	   {gas=1;
	    break;
	    }
      if (gas==0)
	{
	 j=0;
	  for (j=0;j<129;j++)
	     grupe[k][j]=aux[j];
	 grupe[k][j]=0;
	 k++;
	}
   }
fprintf(fout,"%d\n",k);
return 0;
}