Cod sursa(job #42270)

Utilizator pocaituDavid si Goliat pocaitu Data 29 martie 2007 00:34:04
Problema Regiuni Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#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;}