Pagini recente » Cod sursa (job #2354381) | Cod sursa (job #707413) | Cod sursa (job #413751) | Cod sursa (job #2403019) | Cod sursa (job #2657889)
#include <iostream>
#include <cstdio>
#include <cctype>
#include <vector>
#define MOD 131071
using namespace std;
class InParser {
private:
FILE* f;
char* buffer;
int poz;
char read_ch() {
++poz;
if(poz==4096) {
fread(buffer, 1, 4096, f);
poz=0;
}
return buffer[poz];
}
public:
void open_file(char* name) {
f=fopen(name, "r");
buffer=new char[4096]();
poz=4095;
}
int read_int() {
char c=read_ch();
while(!isdigit(c))
c=read_ch();
int n=0;
while(isdigit(c)) {
n=n*10+c-'0';
c=read_ch();
}
return n;
}
};
InParser si;
FILE* so=fopen("ograzi.out", "w");
vector<pair<int, int> > hs[MOD];
int n, m, w, h;
int ans=0;
void verif(int cod, pair<int, int> coord) {
if(cod<0)
return;
for(int i=0; i<hs[cod].size(); ++i) {
if(hs[cod][i].first<=coord.first&&coord.first<=hs[cod][i].first+w&&hs[cod][i].second<=coord.second&&coord.second<=hs[cod][i].second+h)
ans++;
}
}
int main() {
si.open_file("ograzi.in");
n=si.read_int();
m=si.read_int();
w=si.read_int();
h=si.read_int();
for(int i=1;i<=n;i++) {
int x, y;
x=si.read_int();
y=si.read_int();
int x2, y2;
x2=(x+w-1)/w;
y2=(y+h-1)/h;
hs[(x2*100+y2)%MOD].push_back({x, y});
}
for(int i=1;i<=m;i++) {
int x, y;
x=si.read_int();
y=si.read_int();
int x2, y2;
x2=(x+w-1)/w;
y2=(y+h-1)/h;
verif((x2*100+y2)%MOD, {x, y});
verif(((x2-1)*100+y2)%MOD, {x, y});
verif(((x2-1)*100+y2-1)%MOD, {x, y});
verif((x2*100+y2-1)%MOD, {x, y});
}
fprintf(so, "%i\n", ans);
return 0;
}