Pagini recente » Cod sursa (job #41353) | Cod sursa (job #676244) | Cod sursa (job #2046831) | Cod sursa (job #2679761) | Cod sursa (job #39765)
Cod sursa(job #39765)
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
#define Nmax 1024
#define a first
#define b second.first
#define c second.second
#define x first
#define y second
#define pb push_back
#define sz size()
int n, m, ct;
pair<int, pair<int, int> > dr[Nmax];
pair<int, int> punct[Nmax];
vector< vector<int> > list1, list2;
vector<int> v1, v2;
void citire()
{
int i;
scanf("%d %d\n", &n, &m);
for (i = 1; i <= n; ++i)
scanf("%d %d %d\n", &dr[i].a, &dr[i].b, &dr[i].c);
for (i = 1; i <= m; ++i)
scanf("%d %d\n", &punct[i].x, &punct[i].y);
}
void solve()
{
int i, j, k, nr, lim;
list1.resize(1);
for (i = 1; i <= m; ++i)
list1[0].pb(i);
for (i = 1; i <= n; ++i)
{
list2 = list1;
list1.clear();
for (j = 0; j < list2.sz; ++j)
{
v1.clear();
v2.clear();
for (k = 0; k < list2[j].sz; ++k)
if (dr[i].a * punct[ list2[j][k] ].x + dr[i].b * punct[ list2[j][k] ].y + dr[i].c > 0)
v1.pb(list2[j][k]);
else
v2.pb(list2[j][k]);
if (!v1.empty())
list1.pb(v1);
if (!v2.empty())
list1.pb(v2);
}
}
printf("%d\n", list1.sz);
}
int main()
{
freopen("regiuni.in", "r", stdin);
freopen("regiuni.out", "w", stdout);
citire();
solve();
return 0;
}