Cod sursa(job #286480)

Utilizator CezarMocanCezar Mocan CezarMocan Data 23 martie 2009 20:48:05
Problema Regiuni Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <cstdio>
#define mod1 666013
#define mod2 353419
#define maxn 1010

using namespace std;

struct dreapta {
	int a, b, c;
};

int n, m, i, j, x, y, nr, sol, nr2, ok;
dreapta v[maxn];
int h1[maxn], h2[maxn];


int main() {
	freopen("regiuni.in", "r", stdin);
	freopen("regiuni.out", "w", stdout);
	
	scanf("%d%d", &n, &m);
	for (i = 1; i <= n; i++)
		scanf("%d%d%d", &v[i].a, &v[i].b, &v[i].c);
	
	for (i = 1; i <= m; i++) {
		scanf("%d%d", &x, &y);
		nr = nr2 = 0;
		for (j = 1; j <= n; j++)
			if (v[j].a * x + v[j].b * y + v[j].c <= 0) {
				nr = (nr * 2) % mod1;
				nr2 = (nr2 * 6) % mod2;
			}
			else {
				nr = (nr * 2 + 1) % mod1;
				nr2 = (nr2 * 7 + 1) % mod2;
			}
		h1[i] = nr;
		h2[i] = nr2;
	}
	
	for (i = 1; i <= m; i++) {
		ok = 1;
		for (j = 1; j < i; j++)
			if (h1[j] == h1[i] && h2[j] == h2[i]) {
				ok = 0;
				break;
			}
		sol += ok;
	}
	
	printf("%d\n", sol);
	
	return 0;
}