Cod sursa(job #1365195)

Utilizator retrogradLucian Bicsi retrograd Data 28 februarie 2015 10:21:25
Problema Regiuni Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include<cstdio>

typedef int var;

//ifstream fin("regiuni.in");
//ofstream fout("regiuni.out");

const var MAXN = 1001;
const var P1 = 666013,
          P2 = 123201,
          P3 = 9381;


var *A, *B, *H, *C, hsize;

var ind;
void check_add(const var &val) {
    for(ind=0; ind<hsize; ind++) {
        if(H[ind] == val)
            return;
    }
    H[hsize++]=val;
}

int main() {

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

    var n, m, x, y, i, j, val1, val2;
    bool rez;
    scanf("%d%d",&n,&m);

    A = new var[n+1];
    B = new var[n+1];
    C = new var[n+1];
    H = new var[m+1];


    for(i=1; i<=n; i++) {
        scanf("%d%d%d", &A[i], &B[i], &C[i]);
    }

    for(i=1; i<=m; i++) {
        scanf("%d%d", &x, &y);
        val1 = val2 = 0;
        for(j=1; j<=n; j++) {
            rez = (A[j]*x + B[j]*y + C[j] > 0);
            val1 = val1*2 + rez;
            val2 = val2*2 + rez;
            val1 %= P1;
            val2 %= P2;
        }
        check_add(val1*P3+val2);
    }

    printf("%d", hsize);

    return 0;
}