Pagini recente » Cod sursa (job #2615587) | Cod sursa (job #1126901) | Cod sursa (job #336617) | Cod sursa (job #345441) | Cod sursa (job #42561)
Cod sursa(job #42561)
#include<fstream.h>
#define dmax 33
#define nmax 305
#define l 32
//#define grmax 1001
int i,n,d,j,ad1,ad2,k,nr,a[nmax],b[nmax],c[nmax],x[nmax],y[nmax],nr1,m;
unsigned long gr[nmax][dmax],g1[dmax],g2[dmax];
int main()
{
ifstream f("regiuni.in");
f>>n>>m;
for(i=1;i<=n;i++)
f>>a[i]>>b[i]>>c[i];
for(i=0;i<m;i++)
f>>x[i]>>y[i];
for(d=0;d*l<m;d++)
for(i=0;i<=l-1&&i+d*l<m;i++)
gr[1][d]|=1<<i;
nr=1;
for(i=1;i<=n;i++)
{
for(d=1,nr1=nr;d<=nr;d++)
{memset(g1,0,sizeof(g1));
memset(g2,0,sizeof(g2));
for(j=0,ad1=0,ad2=0;j*l<m;j++)
for(k=0;k<=l-1&&k+j*l<m;k++)
if(gr[d][j]&1<<k)
{if(a[i]*x[j*l+k]+b[i]*y[j*l+k]+c[i]>0)
{g1[j]|=1<<k;ad1=1;}
else
{g2[j]|=1<<k;ad2=1;}
}
/* for(j=0,ad1=ad2=0;j*l<m;j++)
{if(g1[j])
ad1=1;
if(g2[j])
ad2=1;
}*/
if(ad1&&ad2)
{memcpy(gr[d],g1,sizeof(g1));
memcpy(gr[++nr1],g2,sizeof(g2));
}
}
nr=nr1;
}
ofstream g("regiuni.out");
g<<nr;
g.close();
return 0;
}