Cod sursa(job #481814)

Utilizator vladiiIonescu Vlad vladii Data 1 septembrie 2010 18:47:00
Problema Regiuni Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <algorithm>
#include <cstdio>
using namespace std;
#define maxn 1001
#define P1 11
#define P2 17
#define mod1 31789
#define mod2 27891

int N, M;
pair<short, short> Hash[maxn];
int A[maxn], B[maxn], C[maxn];

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

    int i, j, x, y;
    int hash1, hash2;

    scanf("%d %d\n", &N, &M);
    for(i=1; i<=N; i++) {
         scanf("%d %d %d\n", &A[i], &B[i], &C[i]);
    }
    for(i=1; i<=M; i++) {
         scanf("%d %d\n", &x, &y);
         hash1 = 0, hash2 = 0;
         for(j=1; j<=N; j++) {
              hash1 = (hash1 * P1 + (A[j] * x + B[j] * y + C[j] > 0)) % mod1;
              hash2 = (hash2 * P2 + (A[j] * x + B[j] * y + C[j] > 0)) % mod2;
         }
         Hash[i].first = hash1;
         Hash[i].second = hash2;
    }

    sort(Hash+1, Hash+M+1);

    printf("%d\n", unique(Hash + 1, Hash + M + 1) - Hash - 1);
    return 0;
}