Pagini recente » Cod sursa (job #1378012) | Cod sursa (job #948850) | Cod sursa (job #1460214) | Cod sursa (job #169283) | Cod sursa (job #2054699)
#include <bits/stdc++.h>
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 < long long, 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);
}
inline long long tr(int a, int b) {
return (1LL * a << 30) + b;
}
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[tr(r[i].x / w, r[i].y / h)] = i;
}
int ans = 0;
for(i = 1; i <= m; i++) {
x = getnr();
y = getnr();
if(in(x, y, mp[tr(x / w - 1, y / h - 1)]))
ans++;
if(in(x, y, mp[tr(x / w, y / h - 1)]))
ans++;
if(in(x, y, mp[tr(x / w - 1, y / h)]))
ans++;
if(in(x, y, mp[tr(x / w, y / h)]))
ans++;
}
fprintf(fout,"%d\n" ,ans);
fclose(fi);
fclose(fout);
return 0;
}