Cod sursa(job #715413)

Utilizator BoSs_De_BosSSeFu SeFiLoR BoSs_De_BosS Data 17 martie 2012 10:35:06
Problema Ograzi Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include<iostream>
#include<fstream>
#include<vector>
#define M 193939
using namespace std;

ifstream in("ograzi.in");
ofstream out("ograzi.out");

int n,m,w,h,sol,x[50010],y[50010],c,d,poz,dr;
vector<int> H[M];
vector<int>::iterator it;

inline void ver(const int &a, const int &b) {
	
	poz =  (a*97 +  b)%M;
	
	for(it=H[poz].begin(); it!=H[poz].end(); ++it) {
		dr = *it;
		
		if(x[dr]<=c && y[dr]<=d && x[dr]+w>=c && y[dr] + h>=d)
			++sol;
	}
}

int main() {
	int i,a,b;
	
	in >> n >> m >> w >> h;
	
	for(i=1;i<=n;++i) {
		in >> x[i] >> y[i];
		
		a = (x[i]-1)/w + 1;
		b = (y[i]-1)/h + 1;
		
		H[(a*97 + b)%M].push_back(i);
	}
	
	for(i=1;i<=m;++i) {
		in >> c >> d;
		
		a = (c-1)/w + 1;
		b = (d-1)/h + 1;
		
		ver(a,b);
		ver(a-1,b);
		ver(a,b-1);
		ver(a-1,b-1);
	}
	
	out << sol << "\n";
	
	return 0;
}