Cod sursa(job #191045)

Utilizator nusmaibunkeleviprofesor cicalescu nusmaibunkelevi Data 25 mai 2008 01:21:00
Problema Regiuni Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<stdio.h>
#include<string.h>
#define NMAX 1024

struct pct{int x,y;};
struct dr{int a,b,c;};

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("%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(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++;
printf("%d",nrg);
return 0;
}