Pagini recente » Cod sursa (job #2241362) | Cod sursa (job #1134208) | Cod sursa (job #3267067) | Cod sursa (job #2299041) | Cod sursa (job #2273728)
#include<fstream>
#include<vector>
#include<stdio.h>
#include<string.h>
#define MOD 1000003
using namespace std;
FILE *fi=fopen("ograzi.in","r");
ofstream fo("ograzi.out");
int n,m,h,w,nr,rez,i,x,y;
pair<int,int> C[50005];
vector<pair<int,int> > HT[MOD+5];
char S[100005];
int l,ind;
void nextS()
{
ind=0;
fread(S,1,100000,fi);
l=strlen(S);
}
int nextInt()
{
int r=0;
if(ind==l)
nextS();
while(S[ind]<'0' || S[ind]>'9')
{
ind++;
if(ind==l)
nextS();
}
while(S[ind]>='0' && S[ind]<='9')
{
r=r*10+S[ind]-'0';
ind++;
if(ind==l)
nextS();
}
return r;
}
int gethval(int x, int y)
{
int rez;
x/=w;
y/=h;
rez=(1LL*y*nr)%MOD;
rez=(rez+x)%MOD;
return rez;
}
int inters(int val, pair<int,int> c)
{
vector<pair<int,int> >::iterator it;
pair<int,int> a;
int rez=0;
for(it=HT[val].begin(); it!=HT[val].end(); it++)
{
a=*it;
if(a.first>=c.first && a.first<=(c.first+w) && a.second>=c.second && a.second<=(c.second+h))
rez++;
}
return rez;
}
int main()
{
n=nextInt();
m=nextInt();
w=nextInt();
h=nextInt();
nr=(1000000/w)+1;
for(i=1; i<=n; i++)
{
C[i].first=nextInt();
C[i].second=nextInt();
}
for(i=1; i<=m; i++)
{
x=nextInt();
y=nextInt();
HT[gethval(x,y)].push_back({x,y});
}
for(i=1; i<=n; i++)
{
rez=rez+inters(gethval(C[i].first,C[i].second),C[i]);
rez=rez+inters(gethval(C[i].first+w,C[i].second),C[i]);
rez=rez+inters(gethval(C[i].first,C[i].second+h),C[i]);
rez=rez+inters(gethval(C[i].first+w,C[i].second+h),C[i]);
}
fo<<rez<<"\n";
fclose(fi);
fo.close();
return 0;
}