Pagini recente » Cod sursa (job #713995) | Cod sursa (job #38879)
Cod sursa(job #38879)
#include <stdio.h>
#include <string.h>
#define input "regiuni.in"
#define output "regiuni.out"
#define nmax 1001
int n,m,i,nr1,nr2,cnt1,cnt2,t,k,max=1;
int a[nmax],b[nmax],c[nmax],x[nmax],y[nmax],s1[nmax],s2[nmax],f1[nmax],f2[nmax],a1[nmax],a2[nmax],y1[nmax],x1[nmax];
void citire()
{
FILE *fin;
fin=fopen(input,"r");
fscanf(fin,"%d %d",&n,&m);
for (i=1;i<=n;i++)
fscanf(fin,"%d %d %d",&a[i],&b[i],&c[i]);
for (i=1;i<=m;i++)
fscanf(fin,"%d %d",&x[i],&y[i]);
fclose(fin);
}
inline void copiaza()
{
if (nr1>0 && nr2>0) max++;
if (nr1>1)
{
cnt2++;
s2[cnt2]=s1[t];
f2[cnt2]=s1[t]+nr1-1;
for (i=1;i<=nr1;i++)
{
x[s2[cnt2]+i-1]=x1[a1[i]];
y[s2[cnt2]+i-1]=y1[a1[i]];
}
}
if (nr2>1)
{
cnt2++;
s2[cnt2]=s1[t]+nr1;
f2[cnt2]=f1[t];
for (i=1;i<=nr2;i++)
{
x[s2[cnt2]+i-1]=x1[a2[i]];
y[s2[cnt2]+i-1]=y1[a2[i]];
}
}
}
inline void determina()
{
for (i=s1[t];i<=f1[t];i++)
if (a[k]*x[i]+b[k]*y[i]+c[k]>0)
{
nr1++;
a1[nr1]=i;
}
else
{
nr2++;
a2[nr2]=i;
}
}
void solve()
{
cnt1=1;
s1[1]=1;
f1[1]=m;
for (k=1;k<=n;k++)
{
cnt2=0;
memcpy(x1,x,sizeof(x1));
memcpy(y1,y,sizeof(y1));
for (t=1;t<=cnt1;t++)
{
nr1=0;
nr2=0;
determina();
copiaza();
}
cnt1=cnt2;
memcpy(s1,s2,sizeof(s1));
memcpy(f1,f2,sizeof(f1));
}
}
void afisare()
{
FILE *fout;
fout=fopen(output,"w");
fprintf(fout,"%d",max);
fclose(fout);
}
int main()
{
citire();
solve();
afisare();
return 0;
}