Pagini recente » Cod sursa (job #1910772) | Cod sursa (job #3174432) | Cod sursa (job #708150) | Cod sursa (job #679680) | Cod sursa (job #44811)
Cod sursa(job #44811)
#include <stdio.h>
#define MAX 101
struct {int x, y;} p[MAX];
struct {int a, b, c;} dr[MAX];
int np, ndr, nrg, grup[MAX][MAX], reg, cnrg;
int main()
{
FILE *f, *g;
f=fopen ("regiuni.in", "r");
g=fopen ("regiuni.out", "w");
int a, b, c, i, j, k, l;
fscanf (f, "%d %d", &ndr, &np);
for (i=1; i<=ndr; i++)
fscanf (f, "%d %d %d", &dr[i].a, &dr[i].b, &dr[i].c);
for (i=1; i<=np; i++)
{fscanf (f, "%d %d", &p[i].x, &p[i].y);
grup[1][i]=i;
}
fclose(f);
nrg=2;
grup[1][0]=np;
for (i=1; i<=ndr; i++)
{
a=dr[i].a; b=dr[i].b; c=dr[i].c;
for (j=1, cnrg=nrg; j<cnrg; j++)
{for (k=1; k<=grup[j][0]; k++)
if (grup[j][k])
if (a*p[grup[j][k]].x + b*p[grup[j][k]].y + c < 0)
{
grup[nrg][++grup[nrg][0]]=grup[j][k];
for (l=k; l<grup[j][0]; l++)
grup[j][l]=grup[j][l+1];
grup[j][0]--;
k--;
}
if (grup[nrg][0]) nrg++;
}
}
for (i=1; i<nrg; i++) if (grup[i][0]) reg++;
fprintf (g, "%d\n", reg);
fclose(g);
return 0;
}