Cod sursa(job #37720)

Utilizator anamaria1Ozorchevici Ana Maria anamaria1 Data 25 martie 2007 12:12:11
Problema Regiuni Scor 60
Compilator cpp Status done
Runda preONI 2007, Runda 4, Clasa a 10-a Marime 1.02 kb
#include<fstream.h>
#define dim 1002
char mat[dim][dim];
int n,m;
struct dreapta
 {int a,b,c;
 };
dreapta w[dim];
int v[dim][2],uz[dim];
float y;
void rezy(int i,int j)
{y=float((-(w[i].a*v[j][0]+w[i].c))/w[i].b);}
int main()
{ifstream f("regiuni.in");
ofstream g("regiuni.out");
int i,j,k,l;
f>>n>>m;
for(i=1;i<=n;i++)
 {f>>w[i].a>>w[i].b>>w[i].c;
  if(w[i].a==0) w[i].c=float((-w[i].c)/w[i].b);
   else if(w[i].b==0) w[i].c=float((-w[i].c)/w[i].a);
 }
for(i=1;i<=m;i++)
 {f>>v[i][0]>>v[i][1];
  for(j=1;j<=n;j++)
   {if(w[j].a==0) {if(v[i][1]>w[j].c) mat[i][j]='a';
		    else mat[i][j]='b';
		  }
     else if(w[j].b==0) {if(v[i][0]>w[j].c) mat[i][j]='a';
			  else mat[i][j]='b';
			}
      else {rezy(j,i);
	    if(v[i][1]>y) mat[i][j]='a';
	     else mat[i][j]='b';
	   }
   }
 }
f.close();
k=m;
for(i=1;i<m;i++)
 if(!uz[i])
  {for(j=i+1;j<=m;j++)
    if(!uz[j])
     {for(l=1;l<=n;l++) if(mat[i][l]!=mat[j][l]) break;
      if(l>n) {k--;uz[j]=1;}
     }
  }
g<<k<<'\n';
g.close();
return 0;
}