Pagini recente » Cod sursa (job #2153103) | Cod sursa (job #2322502) | Cod sursa (job #2645732) | Cod sursa (job #40612) | Cod sursa (job #2636029)
#include <bits/stdc++.h>
using namespace std;
map<pair<int,int>,pair<int,int>> mp;
int n,m,w,h,nr;
const int Mod = 100003;
vector <pair<int,int>> H[Mod+5];
const int bsize = (1<<16)+1;
char buffer[bsize];
int p;
int ReadInt()
{
int nr=0;
while(!isdigit(buffer[p]))
{
if(p==bsize-1)
{
p=0;
fread(buffer,1,bsize,stdin);
}
else
p++;
}
while(isdigit(buffer[p]))
{
nr=nr*10+buffer[p]-'0';
if(p==bsize-1)
{
p=0;
fread(buffer,1,bsize,stdin);
}
else
p++;
}
return nr;
}
void verif(int Key, pair<int,int> b)
{
if(Key<0)
{
return;
}
for(auto a : H[Key])
{
if(a.first<=b.first && a.first+w>=b.first && a.second<=b.second && a.second+h>=b.second)
{
++nr;
}
}
}
int main()
{
freopen("ograzi.in","r",stdin);
freopen("ograzi.out","w",stdout);
n=ReadInt();
m=ReadInt();
w=ReadInt();
h=ReadInt();
for(int i=1; i<=n; i++)
{
int x,y;
x=ReadInt();
y=ReadInt();
int X=x,Y=y;
x=(x+w-1)/w;
y=(y+h-1)/h;
H[(x*100+y)%Mod].push_back({X,Y});
}
for(int i=1; i<=m; i++)
{
int x,y;
x=ReadInt();
y=ReadInt();
int X=x,Y=y;
x=(x+w-1)/w;
y=(y+h-1)/h;
pair<int,int> k= {X,Y};
verif((x*100+y)%Mod,k);
verif(((x-1)*100+y)%Mod,k);
verif((x*100+y-1)%Mod,k);
verif(((x-1)*100+y-1)%Mod,k);
}
cout<<nr<<'\n';
return 0;
}