Pagini recente » Cod sursa (job #2666308) | Cod sursa (job #1177529) | Cod sursa (job #3201109) | Cod sursa (job #655595) | Cod sursa (job #2052409)
#include<cstdio>
#include<vector>
using namespace std;
const int p1=1009;
const int p2=37193;
int H(int x,int y)
{
return (x*p1+y)%p2;
}
vector<int>gx[p2+1];
vector<int>gy[p2+1];
int main()
{
freopen("ograzi.in","r",stdin);
freopen("ograzi.out","w",stdout);
int n,m,w,h,i,x,y,x1,y1,j,nr=0;
scanf("%d%d%d%d",&n,&m,&w,&h);
for(i=1; i<=n; ++i)
{
scanf("%d%d",&x,&y);
x1=(2*x-1)/(2*w)+1;
y1=(2*y-1)/(2*h)+1;
gx[H(x1,y1)].push_back(x);
gy[H(x1,y1)].push_back(y);
}
for(i=1; i<=m; ++i)
{
scanf("%d%d",&x,&y);
x1=(2*x-1)/(2*w);
y1=(2*y-1)/(2*h);
int val=H(x1,y1);
bool ok=0;
for(j=0; j<gx[val].size()&&j<gy[val].size(); ++j)
{
int vx=gx[val][j];
int vy=gy[val][j];
if((x-vx)*(x-vx-w)<=0&&(y-vy)*(y-vy-h)<=0)
{
nr++;
ok=1;
break;
}
}
if(!ok)
{
x1=(2*x-1)/(2*w)+1;
y1=(2*y-1)/(2*h);
val=H(x1,y1);
for(j=0; j<gx[val].size()&&j<gy[val].size(); ++j)
{
int vx=gx[val][j];
int vy=gy[val][j];
if((x-vx)*(x-vx-w)<=0&&(y-vy)*(y-vy-h)<=0)
{
nr++;
ok=1;
break;
}
}
}
if(!ok)
{
x1=(2*x-1)/(2*w);
y1=(2*y-1)/(2*h)+1;
val=H(x1,y1);
for(j=0; j<gx[val].size()&&j<gy[val].size(); ++j)
{
int vx=gx[val][j];
int vy=gy[val][j];
if((x-vx)*(x-vx-w)<=0&&(y-vy)*(y-vy-h)<=0)
{
nr++;
ok=1;
break;
}
}
}
if(!ok)
{
x1=(2*x-1)/(2*w)+1;
y1=(2*y-1)/(2*h)+1;
val=H(x1,y1);
for(j=0; j<gx[val].size()&&j<gy[val].size(); ++j)
{
int vx=gx[val][j];
int vy=gy[val][j];
if((x-vx)*(x-vx-w)<=0&&(y-vy)*(y-vy-h)<=0)
{
nr++;
ok=1;
break;
}
}
}
}
printf("%d\n",nr);
return 0;
}