Pagini recente » Cod sursa (job #2609190) | Borderou de evaluare (job #1640997) | Borderou de evaluare (job #1178992) | Borderou de evaluare (job #2211310) | Cod sursa (job #1122159)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream f("ograzi.in");
ofstream g("ograzi.out");
#define cout g
#define x first
#define y second
#define mp make_pair
#define pb push_back
#define pii pair<int,int>
vector<pii> H[1<<17];
bool okz;
int n,m,w,h,i,result;
pii T;
void _up(int _key,pii P)
{
_key&=((1<<16)-1);
H[_key].pb(P);
}
void ck(int c1,int c2,pii P)
{
int _key=(c1^c2)&((1<<16)-1);
int N=H[_key].size();
for(int i=0; i<N; ++i)
if (H[_key][i].x<=P.x&&H[_key][i].x+w>=P.x)
if (H[_key][i].y<=P.y&&H[_key][i].y+h>=P.y)
okz=true;
}
int main()
{
f>>n>>m>>w>>h;
for(i=1; i<=n; ++i)
{
f>>T.x>>T.y;
_up(((T.x/w+1)^(T.y/h+1)),T);
}
for(i=1; i<=m; ++i)
{
f>>T.x>>T.y;
int c1=T.x/w+1,c2=T.y/h+1;
okz=false;
ck(c1,c2,T);
--c1;
ck(c1,c2,T);
--c2;
ck(c1,c2,T);
++c1;
ck(c1,c2,T);
if (okz) ++result;
}
cout<<result<<'\n';
return 0;
}