Cod sursa(job #2961313)

Utilizator bem.andreiIceman bem.andrei Data 6 ianuarie 2023 09:34:04
Problema Ograzi Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 kb
#include<bits/stdc++.h>

using namespace std;
ifstream r("ograzi.in");
ofstream wr("ograzi.out");

int n, m, w, h, x[50003], y[50003], sol, c, d;
vector<int>p[193939];
vector<int>::iterator it;

void ver(int a,int b)
{
    int z, v;
    v=(97*a+b)%193939;
    if(p[v].size()!=0)
    {
        for(it=p[v].begin(); it<p[v].end(); it++)
        {
            z=*it;
            if(z<50003)
            {
                if(x[z] <= c && c<=x[z]+w && y[z] <= d && d <= y[z]+h)
                {
                    sol++;
                }
            }
        }
    }
}

int main()
{
    int a, b;
    r>>n>>m>>w>>h;
    for(int i=1; i<=n; i++)
    {
        r>>x[i]>>y[i];
        a=(x[i]+w-1) / w;
        b=(y[i]+h-1) / h;
        p[(97*a+b)%193939].push_back(i);
    }
    for(int i=1; i<=m; i++)
    {
        r>>c>>d;
        a=(c+w-1) / w;
        b=(d+h-1) / h;
        ver(a,b);
        ver(a-1,b);
        ver(a,b-1);
        ver(a-1,b-1);
    }
    wr<<sol;
    return 0;
}