Cod sursa(job #81331)

Utilizator coderninuHasna Robert coderninu Data 1 septembrie 2007 14:39:03
Problema Regiuni Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <stdio.h>
#define infile "regiuni.in"
#define outfile "regiuni.out"
#define nmax 1000

struct punct { int x,y; };
struct dreapta { int a ,b ,c; };

punct pct[nmax];
dreapta dr[nmax];
int i, j, n, m;
long c[nmax];
long max=1, rez;
short uz[500501];

void readdata();
void solve();
void writedata();

int ok(punct,dreapta);

int main()
{
 readdata();
 solve();
 writedata();
 return 0;
}

void readdata()
{
 freopen(infile, "r", stdin);
 scanf("%d %d\n", &n, &m);
 for (i=1; i<=n; i++)
     scanf("%d %d %d\n", &dr[i].a, &dr[i].b, &dr[i].c);
 for (i=1; i<=m; i++)
     scanf("%d %d\n", &pct[i].x, &pct[i].y);
 fclose(stdin);
}

void writedata()
{
 freopen(outfile, "w", stdout);
 printf("%ld\n", rez);
 fclose(stdout);
}

void solve()
{
 for (i=1; i<=m; i++)
     {
      for (j=1; j<=n; j++)
	  if (ok(pct[i],dr[j]))
	      c[i]+=j;
      if (!uz[c[i]])
	  {
	   uz[c[i]]=1;
	   rez++;
	  }
     }
}

int ok(punct p, dreapta d)
{
 if (d.a*p.x+d.b*p.y+d.c<0) return 1;
 return 0;
}