Cod sursa(job #1364676)

Utilizator retrogradLucian Bicsi retrograd Data 27 februarie 2015 19:33:07
Problema Regiuni Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include<cstdio>
#include<vector>

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;


vector<var> A, B, C;
vector<var> H;

var ind;
inline void check_add(const var &val) {
    for(ind=0; ind<H.size(); ind++) {
        if(H[ind] == val)
            return;
    }
    H.push_back(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.resize(n+1);
    B.resize(n+1);
    C.resize(n+1);

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

    for(i=1; i<=2; 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 *= 2;
            val1 += rez;
            val1 %= P1;

            val2 *= 2;
            val2 += rez;
            val2 %= P2;
        }
        check_add(val1*P3+val2);
    }

    printf("%d", H.size());

    return 0;
}