Cod sursa(job #191056)

Utilizator nusmaibunkeleviprofesor cicalescu nusmaibunkelevi Data 25 mai 2008 08:03:32
Problema Regiuni Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.32 kb
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

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



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

int fcmp2(void const* a,void const* b){
if(*((long *)a)>*((long *)b))return 1;
else if(*((long *)a)<*((long *)b))return -1;
	 else return 0;
}

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}};
long sc[NMAX]={0};
scanf("%d%d",&n,&m);
for(i=0;i<n;i++) scanf("%d%d%d",&d[i].a,&d[i].b,&d[i].c);
for(j=0;j<m;j++) scanf("%d%d",&p[j].x,&p[j].y);
for(j=0;j<=m;j++)
	for(i=0;i<n;i++){
		poz=d[i].a*p[j].x+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++)
		sc[j]+=(long)cod[j][i];
	//if(cod[j][i]==0) cod[j][i]+=255;
qsort(sc,m,sizeof(sc[0]),fcmp2);
/*
for(i=0;i<m-1;i++)
	for(j=i+1;j<m;j++)
		if(strcmp(cod[i],cod[j])>0){
			strcpy(aux,cod[i]);
			strcpy(cod[i],cod[j]);
			strcpy(cod[j],aux);
		 //	t=p[i];p[i]=p[j];p[j]=t;
			}
for(i=1;i<m;i++)
	if(strcmp(cod[i],cod[i-1])!=0) nrg++;*/
for(i=1;i<m;i++)
	if(sc[i]!=sc[i-1]) nrg++;
printf("%d",nrg);
return 0;
}