Cod sursa(job #1364682)

Utilizator retrogradLucian Bicsi retrograd Data 27 februarie 2015 19:35:16
Problema Regiuni Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include<cstdio>

using namespace std;
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;
inline 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;
}