Cod sursa(job #191065)

Utilizator nusmaibunkeleviprofesor cicalescu nusmaibunkelevi Data 25 mai 2008 09:02:35
Problema Regiuni Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

#define NMAX 1001
struct pct{short int x,y;};
struct dr{short int a,b,c;};

int fcmp(void const* a,void const* b){
return strcmp((char *)a,(char *)b);
}

int main(){
freopen("regiuni.in","r",stdin);
freopen("regiuni.out","w",stdout);
int n,m,i,j,nrg=1,x,y;
long  poz;
char cif[8]={1,2,4,8,16,32,64,128};
char cod[NMAX][NMAX/8+2]={{0}};//,aux[NMAX/8+2];
//pct p[NMAX];//={{0,0}},t;
dr d[NMAX];//={{0,0,0}};
scanf("%d%d",&n,&m);
for(i=0;i<n;i++) scanf("%hd%hd%hd",&d[i].a,&d[i].b,&d[i].c);
//for(j=0;j<m;j++) scanf("%hd%hd",&p[j].x,&p[j].y);
for(j=0;j<m;j++){
	scanf("%d%d",&x,&y);
	for(i=0;i<n;i++){
		poz=(long)d[i].a*x+(long)d[i].b*y+d[i].c;
		if(poz>0L) cod[j][i/8]|=cif[i%8];
		}
	}
for(j=0;j<m;j++)
	for(i=0;i<n/8+1;i++) if(cod[j][i]==0) cod[j][i]+=255;
qsort(cod,m,sizeof(cod[0]),fcmp);

for(i=1;i<m;i++)
	if(strcmp(cod[i],cod[i-1])!=0) nrg++;
printf("%d",nrg);
return 0;
}