Pagini recente » Cod sursa (job #178024) | Cod sursa (job #2869501) | Cod sursa (job #386653) | Cod sursa (job #969833) | Cod sursa (job #56804)
Cod sursa(job #56804)
#include <stdio.h>
#define infile "regiuni.in"
#define outfile "regiuni.out"
int n,m,i,j,d[1001],rez;
struct {int x,y;} pct[1001];
struct {float x,y;} dr[2][1001];
int aux[21700];
void ReadData()
{
int a,b,c,temp;
FILE *fin=fopen(infile , "r");
fscanf(fin, "%d %d\n", &n, &m);
for (i=0; i<n; i++)
{
fscanf(fin, "%d %d %d\n", &a, &b, &c);
if (a==0)
{
temp=float(-c)/b;
dr[0][i].x=0;
dr[0][i].y=temp;
dr[1][i].x=1;
dr[1][i].y=temp;
}
if (b==0)
{
temp=float(-c)/a;
dr[0][i].x=temp;
dr[0][i].y=0;
dr[1][i].x=temp;
dr[1][i].y=1;
}
if (a!=0 && b!=0)
{
temp=float(-c)/a;
dr[0][i].x=temp;
dr[0][i].y=0;
temp=float(-c)/b;
dr[1][i].x=0;
dr[1][i].y=temp;
}
}
for (i=0; i<m; i++)
fscanf(fin, "%d %d\n", &pct[i].x, &pct[i].y);
fclose(fin);
}
int poz(int a, int b)
{
return(pct[a].y-dr[0][b].y)*(dr[1][b].x-dr[0][b].x)-(pct[a].x-dr[0][b].x)*(dr[1][b].y-dr[0][b].y);
}
void Solve()
{
int max=0;
for (i=0; i<n; i++)
for (j=0; j<m; j++)
if (poz(j,i)>0) d[j]=i+d[j]+1;
for (i=0; i<m; i++)
{
aux[d[i]]=1;
if (d[i]>max) max=d[i];
}
rez=0;
for (i=0; i<=max; i++)
if (aux[i])
rez++;
}
void WriteData()
{
FILE *fout=fopen(outfile, "w");
fprintf(fout, "%d", rez);
fclose(fout);
}
int main()
{
ReadData();
Solve();
WriteData();
return 0;
}