Pagini recente » Cod sursa (job #1763933) | Cod sursa (job #1532997) | Cod sursa (job #1029928) | Cod sursa (job #2675568) | Cod sursa (job #715417)
Cod sursa(job #715417)
#include<iostream>
#include<fstream>
#include<vector>
#define M 193939
using namespace std;
ifstream in("ograzi.in");
ofstream out("ograzi.out");
int n,m,w,h,sol,x[50010],y[50010],c,d,poz,dr,nc,eee;
char buff[30];
vector<int> H[M];
vector<int>::iterator it;
inline void ver(const int &a, const int &b) {
poz = (a*97 + b)%M;
for(it=H[poz].begin(); it!=H[poz].end(); ++it) {
dr = *it;
if(x[dr]<=c && y[dr]<=d && x[dr]+w>=c && y[dr] + h>=d)
++sol;
}
}
inline int getT() {
eee=0;
while(buff[nc]>='0' && buff[nc]<='9')
eee=eee*10 + buff[nc++]-'0';
return eee;
}
int main() {
int i,a,b;
in >> n >> m >> w >> h;
in.getline(buff,2000);
for(i=1;i<=n;++i) {
in.getline(buff,40);
nc=0;
x[i]=getT();
++nc;
y[i]=getT();
a = (x[i]-1)/w + 1;
b = (y[i]-1)/h + 1;
H[(a*97 + b)%M].push_back(i);
}
for(i=1;i<=m;++i) {
in.getline(buff,40);
nc=0;
c=getT();
++nc;
d=getT();
a = (c-1)/w + 1;
b = (d-1)/h + 1;
ver(a,b);
ver(a-1,b);
ver(a,b-1);
ver(a-1,b-1);
}
out << sol << "\n";
return 0;
}