Pagini recente » Cod sursa (job #1689370) | Cod sursa (job #2177520) | Cod sursa (job #502825) | Cod sursa (job #61537) | Cod sursa (job #1279981)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f ("regiuni.in");
ofstream g ("regiuni.out");
struct Ecuatie {
short int a, b, c;
};
struct Punct {
short int x, y;
int regiune;
};
const int NMAX = 1000 + 1;
const int MOD = 12998111;
int n, m;
Ecuatie dreapta[NMAX];
Punct punct[NMAX];
void citeste() {
f >> n >> m;
for (int i = 1; i <= n; i++) f >> dreapta[i].a >> dreapta[i].b >> dreapta[i].c;
for (int i = 1; i <= m; i++) {
f >> punct[i].x >> punct[i].y;
punct[i].regiune = 0;
}
}
inline bool comp(Punct a, Punct b) {
return a.regiune < b.regiune;
}
void rezolva() {
int rez;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
rez = dreapta[i].a * punct[j].x + dreapta[i].b * punct[j].y + dreapta[i].c;
if (rez < 0) punct[j].regiune = ((punct[j].regiune) * 10 + 1) % MOD;
else punct[j].regiune = ((punct[j].regiune) * 10 + 2) % MOD;
}
}
}
void numara() {
int sol = 1;
for (int i = 2; i <= m; i++)
if (punct[i].regiune != punct[i - 1].regiune) sol++;
g << sol << '\n';
}
int main() {
citeste();
rezolva();
sort (punct + 1, punct + m + 1, comp);
numara();
return 0;
}