Pagini recente » Cod sursa (job #185585) | Cod sursa (job #1990303) | Cod sursa (job #1007046) | Cod sursa (job #355930) | Cod sursa (job #702468)
Cod sursa(job #702468)
#include<stdio.h>
#include<algorithm>
#include<vector>
#define x first
#define y second
#define pb push_back
#define Nmax 1009
struct dreapta
{
int A,B,C;
};
using namespace std;
int j,q,k,nr,ok,n,m,i,grupa[Nmax];
pair<int,int> a[Nmax];
dreapta b[Nmax];
vector<int> sol[Nmax];
int semn(dreapta X, pair<int,int> p)
{
if (p.x*X.A+p.y*X.B+X.C>=0) return 1;
return -1;
}
int main()
{
freopen("regiuni.in","r",stdin);
freopen("regiuni.out","w",stdout);
scanf("%d%d",&m,&n);
for (i=1;i<=m;i++)
scanf("%d%d%d",&b[i].A,&b[i].B,&b[i].C);
for (i=1;i<=n;i++)
{
scanf("%d%d",&a[i].x,&a[i].y);
grupa[i]=1;
sol[1].pb(i);
}
nr=1;
for (i=1;i<=m;i++)
for (j=1;j<=nr;j++)
{
q=semn(b[i],a[sol[j][0]]);
ok=0;
nr++;
for (k=1;k<sol[j].size();k++)
if (semn(b[i],a[sol[j][k]])!=q)
{
ok=1;
sol[nr].pb(sol[j][k]);
sol[j].erase(sol[j].begin()+k);
k--;
}
if (!ok) nr--;
}
printf("%d\n",nr);
}