Pagini recente » Cod sursa (job #146447) | Cod sursa (job #1259808) | Istoria paginii runda/antr/clasament | Cod sursa (job #1157055) | Cod sursa (job #2001254)
#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;
}