Pagini recente » Cod sursa (job #1807585) | Cod sursa (job #578112) | Cod sursa (job #2959740) | Cod sursa (job #2674002) | Cod sursa (job #2051916)
#include<cstdio>
#include<vector>
using namespace std;
struct punct
{
int x,y;
};
punct vd[50001];
vector<punct>g1[1000001];
vector<punct>g2[1000001];
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)/2].push_back(a);
g2[(x+y)/2].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)/2].size(); ++j)
{
if(g1[(x1+y1)/2][j].x==x1)
{
int u=g2[(x1+y1)/2][j].x;
int v=g2[(x1+y1)/2][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)/2].size(); ++j)
{
if(g1[(x1+y2)/2][j].x==x1)
{
int u=g2[(x1+y2)/2][j].x;
int v=g2[(x1+y2)/2][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)/2].size(); ++j)
{
if(g1[(x2+y1)/2][j].x==x2)
{
int u=g2[(x2+y1)/2][j].x;
int v=g2[(x2+y1)/2][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)/2].size(); ++j)
{
if(g1[(x2+y2)/2][j].x==x2)
{
int u=g2[(x2+y2)/2][j].x;
int v=g2[(x2+y2)/2][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;
}