Cod sursa(job #2001254)

Utilizator moise_alexandruMoise Alexandru moise_alexandru Data 16 iulie 2017 02:20:55
Problema Regiuni Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <iostream>
#include <fstream>
#include <map>
using namespace std;
ifstream in("regiuni.in");
ofstream out("regiuni.out");
const int maxn = 1005;
const int mod1 = 100009;
const int mod2 = 666013;
pair <int, int> v[maxn];
map <pair <int, int>, bool> mp;
int n, m;

struct dreapta
{
    int a, b, c;
};
dreapta dr[maxn];

bool get(dreapta d, pair <int, int> P)
{
    int x = P.first;
    int y = P.second;
    int A = d.a;
    int B = d.b;
    int C = d.c;
    if(A * x + B * y + C < 0)
        return 0;
    else
        return 1;
}

pair <int, int> sir(int ind)
{
    int rez1 = 0;
    int rez2 = 0;
    for(int i = 1; i <= m; i++)
    {
        int p = get(dr[ind], v[i]);
        rez1 = (rez1 * 2 + p) % mod1;
        rez2 = (rez2 * 2 + p) % mod2;
    }
    return make_pair(rez1, rez2);
}


int main()
{
    in >> n >> m;
    for(int i = 1; i <= n; i++)
        in >> dr[i].a >> dr[i].b >> dr[i].c;
    for(int i = 1; i <= m; i++)
        in >> v[i].first >> v[i].second;
    for(int i = 1; i <= n; i++)
        mp[sir(i)] = 1;
    int nr = 0;
    for(auto it : mp)
        nr++;
    out << nr << "\n";
    return 0;
}