Pagini recente » Cod sursa (job #1610597) | Cod sursa (job #912523) | Cod sursa (job #808161) | Cod sursa (job #2363179) | Cod sursa (job #1463110)
#define _CRT_SECURE_NO_DEPRECATE
#include <stdio.h>
#include <stdlib.h>
#include <vector>
#define MOD 666013
#define f first
#define s second
#define foreach(G) for (decltype((G).begin()) it = (G).begin(); it != (G).end(); ++it)
using namespace std;
const int Z = 1024;
int N, M, W, H, cnt;
vector <pair<int, int>> Hash[MOD];
pair <int, int> p;
char b[15];
void read(){
gets(b);
int i = 0, x = 0, y = 0;
while (!(b[i] >= '0' && b[i] <= '9')) ++i;
for (; b[i] >= '0' && b[i] <= '9'; ++i)
x = x * 10 + (b[i] - '0');
for (++i; b[i] >= '0' && b[i] <= '9'; ++i)
y = y * 10 + (b[i] - '0');
p = make_pair(x, y);
}
inline int check(){
for (int i = -1; i < 1; ++i)
for (int j = -1; j < 1; ++j){
int key = ((p.f / W + i) * Z + (p.s / H) + j);
if (key < 0) continue;
foreach(Hash[key % MOD])
if (it->f <= p.f && it->f + W >= p.f && it->s <= p.s && it->s + H >= p.s) return 1;
}
return 0;
}
int main(){
freopen("ograzi.in", "r", stdin);
freopen("ograzi.out", "w", stdout);
scanf("%d %d %d %d\n", &N, &M, &W, &H);
for (; N; --N)
read(),
Hash[((p.f / W) * Z + p.s / H) % MOD].push_back(p);
for (; M; --M)
read(),
cnt += check();
printf("%d", cnt);
return 0;
}