Cod sursa(job #191059)

Utilizator nusmaibunkeleviprofesor cicalescu nusmaibunkelevi Data 25 mai 2008 08:18:33
Problema Regiuni Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 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;
long  poz;
char cif[8]={1,2,4,8,16,32,64,128};
char cod[NMAX/2][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++)
	for(i=0;i<n;i++){
		poz=(long)d[i].a*p[j].x+(long)d[i].b*p[j].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;
}