Cod sursa(job #561053)

Utilizator acelasi7Tudor Maxim acelasi7 Data 18 martie 2011 20:32:30
Problema Ograzi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include<fstream>
#include<vector>
using namespace std;
#define nrn 50005
#define mod 193939

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

int X[nrn],Y[nrn],sol,n,w,h,c,d;
vector<int>H[mod];
vector<int>::iterator it;

void check(int a,int b)
{
    int poz,k;
    poz=(97*a+b)%mod;
    for(it=H[poz].begin();it<H[poz].end();++it)
    {
        k=*it;;
        if(X[k]<=c && X[k]+w>=c && Y[k]<=d && Y[k]+h>=d)
            ++sol;
    }
}

int main()
{
    int i,a,b,m;
    in>>n>>m>>w>>h;
    for(i=1;i<=n;++i)
    {
        in>>X[i]>>Y[i];
        a=(X[i]+w-1)/w;
        b=(Y[i]+h-1)/h;
        H[(97*a+b)%mod].push_back(i);
    }
    for(i=1;i<=m;++i)
    {
        in>>c>>d;
        a=(c+w-1)/w;
        b=(d+h-1)/h;
        check(a,b);
        check(a,b-1);
        check(a-1,b);
        check(a-1,b-1);
    }
    out<<sol<<'\n';
    in.close();
    out.close();
    return 0;
}