Pagini recente » Cod sursa (job #2272094) | Cod sursa (job #2433507) | Cod sursa (job #2820434) | Cod sursa (job #1238225) | Cod sursa (job #48663)
Cod sursa(job #48663)
#include <cstdio>
#include <vector>
using namespace std;
#define REP(i, N) for (int i = 0; i < (N); ++i)
#define SZ(a) ((int)(a).size())
#define PB push_back
typedef vector<int> VI;
const int MAXN = 1024;
const int MAXM = 1024;
/*
struct node {
int info;
node* next;
};
*/
int M, N, a[MAXM], b[MAXM], c[MAXM], x[MAXN], y[MAXN], R = 1;
//node* regs[MAXM];
VI regs[MAXM];
inline int sign(int x) {
return x > 0 ? 1 : -1;
}
/*
inline void insert_node(node*& reg, int n) {
node* p = new node;
p->info = n;
p->next = reg;
reg = p;
}
*/
int main() {
freopen("regiuni.in", "rt", stdin);
freopen("regiuni.out", "wt", stdout);
scanf("%d %d", &M, &N);
//N = M = 1000;
REP(i, M) {
scanf("%d %d %d", &a[i], &b[i], &c[i]);
//a[i] = rand() & 1023;
//b[i] = rand() & 1023;
//c[i] = (rand() & 32767) - 16384;
}
//R = 1;
//regs[0].clear();
REP(i, N) {
scanf("%d %d", &x[i], &y[i]);
//x[i] = rand() & 1023;
//y[i] = rand() & 1023;
//insert_node(regs[0], i);
regs[0].PB(i);
}
for (int i = 0; i < M; ++i) {
int tmp = R;
for (int r = 0; r < tmp; ++r) {
//node *reg = NULL, *nreg = NULL;
VI reg, nreg;
//for (node* p = regs[r]; p; p = p->next) {
VI::iterator it;
for (it = regs[r].begin(); it != regs[r].end(); ++it) {
//int s = sign(a[i] * x[p->info] + b[i] * y[p->info] + c[i]);
int s = sign(a[i] * x[*it] + b[i] * y[*it] + c[i]);
//if (s == 1) insert_node(reg, p->info);
//else insert_node(nreg, p->info);
if (s == 1) reg.PB(*it);
else nreg.PB(*it);
}
if (SZ(reg) && SZ(nreg)) {
regs[r].clear();
regs[r] = reg;
regs[R++] = nreg;
}
}
}
printf("%d\n", R);
//goto start;
return 0;
}