Cod sursa(job #774263)

Utilizator badmanDragan Dan badman Data 3 august 2012 23:18:03
Problema Regiuni Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <cstdio>
#include <algorithm>

#define MAX 1001
#define P1 11
#define P2 17
#define mod1 31789
#define mod2 27891

using namespace std;

pair<short, short> Hash[MAX];
int A[MAX], B[MAX], C[MAX];

int main() {
    int n, m;
    int i, j, x, y;
    int hash1, hash2;
    
    FILE *f = fopen("regiuni.in", "r");
    FILE *g = fopen("regiuni.out", "w");

    fscanf(f, "%d %d", &n, &m);
    for(i = 1; i <= n; i++) {
         fscanf(f, "%d %d %d", &A[i], &B[i], &C[i]);
    }
    for(i = 1; i <= m; i++) {
         fscanf(f, "%d %d", &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);

    fprintf(g, "%d", unique(Hash + 1, Hash + m + 1) - Hash - 1);
    fclose(f);
    fclose(g);
    return 0;
}