Pagini recente » Cod sursa (job #1571020) | Cod sursa (job #1040921) | Cod sursa (job #275899) | Cod sursa (job #542725) | Cod sursa (job #24981)
Cod sursa(job #24981)
#include <stdio.h>
#include <ext/hash_map>
//#include <hash_map>
#define tx(x) ((2 * (x) + W) / (2 * W))
#define ty(y) ((2 * (y) + H) / (2 * H))
//using namespace __gnu_cxx;
using namespace std;
int x[50000], y[50000];
int N, M, H, W, xx, yy;
hash_map<int, int> h;
inline int hashc(int x, int y) {
return (x + y + (y << 9));
}
inline bool included(int X, int Y) {
hash_map<int, int>::iterator it = h.find(hashc(X, Y));
if (it != h.end()) {
if (xx >= x[it->second] && xx <= x[it->second] + W &&
yy >= y[it->second] && yy <= y[it->second] + H)
return 1;
}
return 0;
}
int main() {
FILE* f = fopen ("ograzi.in", "r");
fscanf(f, "%d %d %d %d", &N, &M, &W, &H);
for (int i = 0; i < N; i++) {
fscanf(f, "%d %d", &x[i], &y[i]);
h[hashc(tx(x[i]), ty(y[i]))] = i;
}
int num = 0;
for (int i = 0; i < M; i++) {
fscanf(f, "%d %d", &xx, &yy);
int X = tx(xx);
int Y = ty(yy);
if (included(X, Y) || included(X - 1, Y) ||
included(X, Y - 1) || included(X - 1, Y - 1)) num++;
}
fclose(f);
f = fopen("ograzi.out", "w");
fprintf(f, "%d", num);
fclose(f);
return 0;
}