Cod sursa(job #39031)

Utilizator crawlerPuni Andrei Paul crawler Data 26 martie 2007 13:02:17
Problema Regiuni Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <stdio.h>
#include <string>

using namespace std;

#define MOD 1323456201
#define Nmax 1001


struct dreapta
 {
  int a,b,c;
 } d[1001];

struct pct
 {
  int x,y;
 } p[1001];


int m, S;
long long h[Nmax];

int main()
 {
  freopen("regiuni.in","r",stdin);
  freopen("regiuni.out","w",stdout);

  int i,j,n;

  scanf("%d%d", &n,&m);

  for(i=1;i<=n;++i)
   scanf("%d%d%d", &d[i].a, &d[i].b, &d[i].c);

  for(i=1;i<=m;++i)
   scanf("%d%d", &p[i].x, &p[i].y);

  for(i=1;i<=m;++i)
   for(j=1;j<=n;++j)
    if(d[j].a*p[i].x+d[j].b*p[i].y+d[j].c > 0)
     {
      h[i] = h[i]*2 + 1;
      if(h[i] > MOD)
       h[i] -=MOD;
     }
      else
     {
      h[i] = h[i]*2;
      if(h[i] > MOD)
       h[i] -=MOD;
     }

  ++m;

   sort(h,h+m);

   S=0;

   long long aux;

   for(i=1;i<m;)
    {
     aux = h[i];
     for(;h[i] == aux && i<m;++i);
     ++S;
    }

   printf("%d\n", S);

   return 0;
 }