Cod sursa(job #2639878)

Utilizator gruhtenZinnenberg Gruhten gruhten Data 4 august 2020 13:13:31
Problema Ograzi Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include<fstream>
#include<vector>
using namespace std;
#define nrn 50006
#define mod 666013
//#define mod 17

ifstream f("ograzi.in");
ofstream g("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 and X[k]+w>=c and Y[k]<=d and Y[k]+h>=d)
            ++sol;
    }
}

int main()
{
    int i,a,b,m,val;

    f>>n>>m>>w>>h;

    for(i=1;i<=n;++i)
    {
        f>>X[i]>>Y[i];
        a=(X[i]+w)/w;
        b=(Y[i]+h)/h;
        val=97*a+b;
        val=val%mod;
        H[val].push_back(i);
    }

    for(i=1;i<=m;++i)
    {
        f>>c>>d;
        a=(c+w)/w;
        b=(d+h)/h;
        check(a,b);
        check(a,b-1);
        check(a-1,b);
        check(a-1,b-1);
    }

    g<<sol<<'\n';

    return 0;
}