Cod sursa(job #940440)

Utilizator rudarelLup Ionut rudarel Data 16 aprilie 2013 11:25:35
Problema Regiuni Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 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;
}