Cod sursa(job #37837)

Utilizator portocalaDiculescu Elena Alexandra portocala Data 25 martie 2007 12:47:03
Problema Regiuni Scor 0
Compilator cpp Status done
Runda preONI 2007, Runda 4, Clasele 11-12 Marime 0.97 kb
#include <fstream.h>
#define dim 1001;
float v[dim][2];
struct linie
{float a,b,c;
};
linie w[dim];
int n,m,ok[dim];
char a[dim][dim];
float trans(int i,int x)
{float y=-(w[i].a*x+w[i].c)/w[i].b;
 return y;
}
int main()
{ifstream f("regiuni.in");
f>>n>>m;
int i,j,k,l;
for(i=1;i<=n;i++)
 {f>>w[i].a>>w[i].b>>w[i].c;
  if(!w[i].a){w[i].c=(-w[i].c)/w[i].b;}
   else if(!w[i].b){w[i].c=(-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){if(w[i].c>v[i][1])a[i][j]='j';
		 else a[i][j]='s';
	       }
    else if(!w[j].b){if(w[i].c>v[i][0])a[i][j]='j';
		 else a[i][j]='s';
	       }
     else {if(trans(j,v[i][0])>v[i][1])a[i][j]='j';
	    else a[i][j]='s';
	  }
   }
 }
f.close();
k=m;
for(i=1;i<m;i++)
 if(!ok[i])
  for(j=i+1;j<=m;j++)
   if(!ok[j]){for(l=1;l<=n;l++)
	       if(a[i][l]!=a[j][l])break;
	      if(l>n){k--;ok[j]=1;}
	     }
ofstream g("regiuni.out");
g<<k<<'\n';
g.close();
return 0;
}