Pagini recente » Cod sursa (job #2652024) | Cod sursa (job #28251) | Cod sursa (job #1072130) | Cod sursa (job #681326) | Cod sursa (job #2054695)
#include <bits/stdc++.h>
#define lsb(x) (x & (-x))
FILE *fi, *fout;
const int MAXBUF = (1 << 17);
char buf[MAXBUF];
int pbuf = MAXBUF;
inline char nextch() {
if(pbuf == MAXBUF) {
fread(buf, 1, MAXBUF, fi);
pbuf = 0;
}
return buf[pbuf++];
}
inline int getnr() {
char ch = nextch();
while(!isdigit(ch))
ch = nextch();
int nr = 0;
while(isdigit(ch)) {
nr = nr * 10 + ch - '0';
ch = nextch();
}
return nr;
}
const int MAXN = (int) 5e4;
struct Rect {
int x, y;
}r[MAXN + 1];
std::map < std::pair <int, int>, int > mp;
int w, h;
inline bool in(int x, int y, int p) {
if(p == 0)
return 0;
return (r[p].x <= x && r[p].y <= y && x <= r[p].x + w && y <= r[p].y + h);
}
int main() {
int n, m, i, j, x, y;
fi= fopen("ograzi.in" ,"r");
fout = fopen("ograzi.out" ,"w");
n = getnr();
m = getnr();
w = getnr();
h = getnr();
for(i = 1; i <= n; i++) {
r[i].x = getnr();
r[i].y = getnr();
mp[{(r[i].x + w - 1) / w, (r[i].y + h - 1) / h}] = i;
}
int ans = 0;
for(i = 1; i <= m; i++) {
x = getnr();
y = getnr();
if(in(x, y, mp[{(x - 1) / w, (y - 1) / h}]))
ans++;
if(in(x, y, mp[{(x + w - 1) / w, (y - 1) / h}]))
ans++;
if(in(x, y, mp[{(x - 1) / w, (y + h - 1) / h}]))
ans++;
if(in(x, y, mp[{(x + w - 1) / w, (y + h - 1) / h}]))
ans++;
}
fprintf(fout,"%d\n" ,ans);
fclose(fi);
fclose(fout);
return 0;
}