Pagini recente » Cod sursa (job #1552851) | Cod sursa (job #1456937) | Cod sursa (job #1621790) | Cod sursa (job #2054302) | Cod sursa (job #2051914)
#include<cstdio>
#include<vector>
using namespace std;
struct punct
{
int x,y;
};
punct vd[50001];
vector<punct>g1[2000001];
vector<punct>g2[2000001];
int main()
{
freopen("ograzi.in","r",stdin);
freopen("ograzi.out","w",stdout);
int n,m,w,h,i,x,y,x1,y1,x2,y2,nr=0,j;
scanf("%d%d%d%d",&n,&m,&w,&h);
for(i=1; i<=n; ++i)
{
scanf("%d%d",&vd[i].x,&vd[i].y);
x=((2*vd[i].x-1)/(2*w))+1;
y=((2*vd[i].y-1)/(2*h))+1;
punct a;
a.x=x;
a.y=y;
punct b;
b.x=vd[i].x;
b.y=vd[i].y;
g1[x+y].push_back(a);
g2[x+y].push_back(b);
}
for(i=1; i<=m; ++i)
{
scanf("%d%d",&x,&y);
x1=((2*x-1)/(2*w));
y1=((2*y-1)/(2*h));
x2=x1+1;
y2=y1+1;
bool ok=0;
for(j=0; j<g1[x1+y1].size(); ++j)
{
if(g1[x1+y1][j].x==x1)
{
int u=g2[x1+y1][j].x;
int v=g2[x1+y1][j].y;
if((x-u)*(x-u-w)<=0&&(y-v)*(y-v-h)<=0)
{
nr++;
ok=1;
}
break;
}
}
if(!ok)
{
for(j=0; j<g1[x1+y2].size(); ++j)
{
if(g1[x1+y2][j].x==x1)
{
int u=g2[x1+y2][j].x;
int v=g2[x1+y2][j].y;
if((x-u)*(x-u-w)<=0&&(y-v)*(y-v-h)<=0)
{
nr++;
ok=1;
}
break;
}
}
}
if(!ok)
{
for(j=0; j<g1[x2+y1].size(); ++j)
{
if(g1[x2+y1][j].x==x2)
{
int u=g2[x2+y1][j].x;
int v=g2[x2+y1][j].y;
if((x-u)*(x-u-w)<=0&&(y-v)*(y-v-h)<=0)
{
nr++;
ok=1;
}
break;
}
}
}
if(!ok)
{
for(j=0; j<g1[x2+y2].size(); ++j)
{
if(g1[x2+y2][j].x==x2)
{
int u=g2[x2+y2][j].x;
int v=g2[x2+y2][j].y;
if((x-u)*(x-u-w)<=0&&(y-v)*(y-v-h)<=0)
{
nr++;
ok=1;
}
break;
}
}
}
}
printf("%d\n",nr);
return 0;
}