Pagini recente » Cod sursa (job #1288915) | Cod sursa (job #1276172) | Cod sursa (job #992793) | Cod sursa (job #1270670) | Cod sursa (job #1525211)
#include <fstream>
#include <string>
#include <vector>
using namespace std;
ifstream fin("ograzi.in");
ofstream fout("ograzi.out");
const int mod= 666013;
int n, m, w, h;
string buffer;
string::iterator buffer_it;
void read_int_nn( int &x ) {
for ( ; *buffer_it>'9' || *buffer_it<'0'; ++buffer_it ) ;
for ( x= 0; *buffer_it>='0' && *buffer_it<='9'; ++buffer_it ) {
x= x*10+*buffer_it-'0';
}
}
struct str {
int x, y;
};
vector <str> v[mod];
inline str mp( int x, int y ) {
str sol;
sol.x= x, sol.y= y;
return sol;
}
inline bool check( int k, int x, int y ) {
if ( k>=0 ) {
for ( vector <str>::iterator it= v[k].begin(); it!=v[k].end(); ++it ) {
if ( (*it).x<=x && (*it).x+w>=x && (*it).y<=y && (*it).y+h>=y ) {
return 1;
}
}
}
return 0;
}
int main( ) {
getline( fin, buffer, (char)0 );
buffer_it= buffer.begin();
read_int_nn(n), read_int_nn(m);
read_int_nn(w), read_int_nn(h);
for ( int i= 1, x, y; i<=n; ++i ) {
read_int_nn(x), read_int_nn(y);
v[((x/w)*1001+y/h)%mod].push_back(mp(x, y));
}
int sol= 0;
for ( int i= 1, x, y; i<=m; ++i ) {
read_int_nn(x), read_int_nn(y);
int k1= ((x/w-1)*1001+y/h-1)%mod, k2= ((x/w-1)*1001+y/h)%mod, k3= ((x/w)*1001+y/h-1)%mod, k4= ((x/w)*1001+y/h)%mod;
if ( check(k1, x, y) || check(k2, x, y) || check(k3, x, y) || check(k4, x, y) ) {
++sol;
}
}
fout<<sol<<"\n";
return 0;
}