Cod sursa(job #1561966)

Utilizator dobrebogdanDobre Bogdan Mihai dobrebogdan Data 4 ianuarie 2016 18:19:37
Problema Ograzi Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
const int m1=23;
const int m2=29;
//whatcha gunna do
int w,h;
struct sp
{
    int x,y;
};
vector<sp> a[m1+3][m2+3];
int main()
{
    freopen("ograzi.in","r",stdin);
    freopen("ograzi.out","w",stdout);
    int n,m,i,j,x,y,xi,yi,xj,yj,nr=0;
    sp tm;
    scanf("%d%d%d%d",&n,&m,&w,&h);
    for(i=1; i<=n; i++)
    {
        scanf("%d%d",&x,&y);
        tm.x=x;
        tm.y=y;
        xi=(x/w)%m1;
        yi=(y/h)%m2;
        xj=(xi+1)%m1;
        yj=(yi+1)%m2;
        a[xi][yi].push_back(tm);
        a[xi][yj].push_back(tm);
        a[xj][yi].push_back(tm);
        a[xj][yj].push_back(tm);
    }
    for(i=1; i<=m; i++)
    {
        scanf("%d%d",&x,&y);
        xi=(x/w)%m1;
        yi=(y/h)%m2;
        for(j=a[xi][yi].size()-1; j>=0; j--)
        {
            tm=a[xi][yi][j];
            if(tm.x<=x && x<=tm.x+w && tm.y<=y && y<=tm.y+h)
                break;
        }
        if(j>=0)
            nr++;
    }
    printf("%d\n",nr);
    return 0;
}