Pagini recente » Cod sursa (job #2243232) | Cod sursa (job #2024066) | Cod sursa (job #1053952) | Cod sursa (job #637589) | Cod sursa (job #780168)
Cod sursa(job #780168)
#include <fstream>
#include <vector>
#define DN 50005
#define MOD (1<<15)
using namespace std;
typedef vector<int>::iterator it;
int n,m,h,w,x[DN],y[DN],px,py,rez;
vector<int> hs[MOD];
int hash(int a, int b) {
return ((a<<3) +b)&(0x00003fff);
}
int check(int a, int b) {
int unde=hash(a,b);
for(it i=hs[unde].begin(); i!=hs[unde].end(); ++i)
if(x[*i]<=px && x[*i]+w>=px && y[*i]<=py && y[*i]+h>=py) return 1;
return 0;
}
int main()
{
ifstream f("ograzi.in");
ofstream g("ograzi.out");
f>>n>>m>>w>>h;
for(int i=1; i<=n; ++i) {
f>>x[i]>>y[i];
int a=(x[i]+w)/w,b=(y[i]+h-1)/h;
hs[hash(a,b)].push_back(i);
}
for(int i=1; i<=m; ++i) {
f>>px>>py;
int a=(px+w)/w, b=(py+h)/h;
rez+=(check(a,b)|check(a,b-1)|check(a-1,b)|check(a-1,b-1));
}
g<<rez;
return 0;
}