Pagini recente » Cod sursa (job #1773550) | Cod sursa (job #179230) | Cod sursa (job #1296216)
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
#define BSIZE 1007
#define MP make_pair
#define F first
#define S second
#define NMAX 1007
char buffer[BSIZE];
const pair < int , int > base=MP(10153,10723);
const pair < int , int > MOD=MP(666013,100007);
pair < int , int > H[NMAX];
pair < pair < short int , short int > , short int > d[NMAX];
pair < short int , short int > po[NMAX];
int p,N,M,i,j,ans,sign;
int readInt()
{
int number=0,sgn=1;
while (!('0'<=buffer[p] && buffer[p]<='9'))
{
if (buffer[p]=='-') sgn=-1;
if (p==BSIZE-1)
{
fread(buffer,1,BSIZE,stdin);
p=0;
} else ++p;
}
while ('0'<=buffer[p] && buffer[p]<='9')
{
number=number*10+buffer[p]-'0';
if (p==BSIZE-1)
{
fread(buffer,1,BSIZE,stdin);
p=0;
} else ++p;
}
return sgn*number;
}
int main()
{
freopen("regiuni.in","r",stdin);
freopen("regiuni.out","w",stdout);
fread(buffer,1,BSIZE,stdin);
for (N=readInt(),M=readInt(),i=1;i<=N;++i)
{
d[i].F.F=readInt();
d[i].F.S=readInt();
d[i].S=readInt();
}
for (i=1;i<=M;++i)
{
po[i].F=readInt();
po[i].S=readInt();
}
for (i=1;i<=M;++i)
for (j=1;j<=N;++j)
{
sign=d[j].F.F*po[i].F+d[j].F.S*po[i].S+d[j].S;
sign=(sign>=0) ? 1 : 0;
H[i].F=(H[i].F*base.F+sign)%MOD.F;
H[i].S=(H[i].S*base.S+sign)%MOD.S;
}
for (sort(H+1,H+M+1),i=1;i<=M;++i)
if (H[i]!=H[i-1]) ++ans;
printf("%d\n",ans);
return 0;
}