Pagini recente » Cod sursa (job #1219375) | Cod sursa (job #2310028) | Cod sursa (job #685852) | Cod sursa (job #1208924) | Cod sursa (job #38016)
Cod sursa(job #38016)
#include <stdio.h>
#define NMAX 1010
#define BMAX 34
#define mod(a) (((a) >= 30) ? (a)-30:(a))
int D[NMAX][3], A[NMAX][BMAX+2], N, M, Rep[NMAX], Cnt[NMAX];
int main()
{
int i, j, x, y, l, c, max = 0;
freopen("regiuni.in", "r", stdin);
scanf("%d %d", &N, &M);
for (i = 1; i <= N; i++) scanf("%d %d %d", D[i]+0, D[i]+1, D[i]+2);
for (i = 1; i <= M; i++)
{
scanf("%d %d", &x, &y);
for (j = 1; j <= N; j++)
if (D[j][0]*x+D[j][1]*y+D[j][2] > 0)
{
l = j/30; c = mod(j);
for (; c > 30; c = mod(c));
A[i][l] += (1<<c);
}
}
for (i = 1; i <= M; i++) Rep[i] = i;
for (i = 1; i < M; i++)
for (j = i+1; j <= M; j++)
{
for (c = 0, l = 1,l = A[i][c]==A[j][c]; l == 1 && c <= BMAX; c++, l = A[i][c]==A[j][c]);
Rep[j] = ((l==1) ? Rep[i]:Rep[j]);
}
for (i = 1; i <= M; i++) Cnt[ Rep[i] ]++;
for (i = 1; i <= M; i++) max += (Cnt[i]>0);
freopen("regiuni.out", "w", stdout);
printf("%d\n", max);
return 0;
}