Pagini recente » Cod sursa (job #1506653) | Cod sursa (job #140007) | Cod sursa (job #1098792) | Cod sursa (job #2131105) | Cod sursa (job #42270)
Cod sursa(job #42270)
#include<stdio.h>
#include<fstream.h>
#define nmax 1010
struct { int x[nmax],y[nmax],n;} gr[nmax];
struct { int x[nmax],y[nmax],n;} g1;
struct { int x[nmax],y[nmax],n;} g2;
int n,m,k,i,j,nr,x,y,a[nmax],b[nmax],c[nmax];
long double d;
int main()
{freopen("regiuni.in","r",stdin);
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
scanf("%d%d%d",&a[i],&b[i],&c[i]);
for(i=1;i<=m;i++)
{scanf("%d%d",&x,&y);
gr[1].x[++gr[1].n]=x;
gr[2].y[gr[1].n]=y;
}
nr=1;
for(i=1;i<=n;i++)
//nr - nr de grupuri
for(j=1;j<=nr;j++)
{for(k=1,g1.n=g2.n=0;k<=gr[j].n;k++)
{d=(long double)a[i]*gr[j].x[k]+b[i]*gr[j].y[k]+c[i];
if(d<0)
{g1.x[++g1.n]=gr[j].x[k];
g1.y[g1.n]=gr[j].y[k];
}
else
{
g2.x[++g2.n]=gr[j].x[k];
g2.y[g2.n]=gr[j].y[k];
}
}
if(g1.n&&g2.n)
{gr[j].n=g1.n;
for(k=1;k<=g1.n;k++)
{
gr[j].x[k]=g1.x[k];
gr[j].y[k]=g1.y[k];
}
gr[++nr].n=g2.n;
for(k=1;k<=g2.n;k++)
{
gr[nr].x[k]=g2.x[k];
gr[nr].y[k]=g2.y[k];
}
}
}
freopen("regiuni.out","w",stdout);
printf("%d",nr);
fclose(stdout);
return 0;}