Pagini recente » Cod sursa (job #1299516) | Cod sursa (job #217746) | Cod sursa (job #973936) | Cod sursa (job #2024783) | Cod sursa (job #57879)
Cod sursa(job #57879)
#include <cstdio>
#include <vector>
#include <string>
#include <algorithm>
#include <iostream>
#define DIM 1001
using namespace std;
struct Dreapta {
int a, b, c;
};
struct Punct {
int x, y;
};
vector <Dreapta> dr;
Punct pt[DIM];
int n, m;
vector <string> V;
int sol;
void Read();
void Solve();
void Write();
int Coef(Dreapta D, Punct A);
int main()
{
Read();
Solve();
Write();
return 0;
}
void Read()
{
FILE *fin = fopen("regiuni.in", "r");
fscanf(fin, "%d%d", &n, &m);
dr.resize(n+1);
int aa, bb, cc;
for (int i = 1; i <= n; i++)
{
fscanf(fin, "%d%d%d", &aa, &bb, &cc);
dr[i].a = aa; dr[i].b = bb; dr[i].c = cc;
}
for (int i = 1; i <= m; i++)
fscanf(fin, "%d%d", &pt[i].x, &pt[i].y);
fclose(fin);
}
void Solve()
{
V.resize(m);
for (int i = 1; i <= m; i++)
for (int j = 1; j <= n; j++)
V[i-1] += Coef(dr[j], pt[i]) + '0';
sort(V.begin(), V.end());
for (int i = 0; i < m; i++)
{
while (i + 1 < m && V[i+1] == V[i]) i++;
sol++;
}
}
int Coef(Dreapta D, Punct A)
{
if (D.a * A.x + D.b * A.y + D.c > 0) return 1;
return 0;
}
void Write()
{
FILE *fout = fopen("regiuni.out", "w");
fprintf(fout, "%d\n", sol);
fclose(fout);
}