Cod sursa(job #1506004)

Utilizator akaprosAna Kapros akapros Data 19 octombrie 2015 22:19:09
Problema Ograzi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.35 kb
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#define mod 666013
#define maxN 50002
#define maxM 100002
#define inf 1000002
#define ll long long
using namespace std;
ll val;
int i, j, n, m, w, h, x, y, sol;
vector < ll > V[mod];
int In_hash(ll val)
{
    ll x = val % mod;
    int i, l = V[x].size();
    for (i = 0; i < l; ++ i)
        if (V[x][i] == val)
            return 1;
    return 0;
}
void read()
{
    freopen("ograzi.in", "r", stdin);
    scanf("%d %d %d %d", &n, &m, &w, &h);
    for (i = 1; i <= n; ++ i)
    {
        scanf("%d %d", &x, &y);
        val = (long long)((x / w) * inf * 1LL + (y / h) * 1LL);
        V[val % mod].push_back(val);
    }
}
void solve()
{
    int z, t;
    while (m --)
    {
        scanf("%d %d", &x, &y);
        for (z = -1; z < 1; ++ z)
            for (t = -1; t < 1; ++ t)
                if (z + t > -2)
            {
                ll val = (long long)(((x / w) + z) * inf * 1LL + (y / h) * 1LL + t);
                if (val >= 0 && In_hash(val))
                {
                    ++ sol;
                    z = 1;
                    t = 1;
                }
            }
    }
}
void write()
{
    freopen("ograzi.out", "w", stdout);
    printf("%d", sol);
}
int main()
{
    read();
    solve();
    write();
    return 0;
}