Cod sursa(job #1561978)

Utilizator dobrebogdanDobre Bogdan Mihai dobrebogdan Data 4 ianuarie 2016 18:25:50
Problema Ograzi Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
const int m1=1003;
const int m2=1009;
//whatcha gunna do
int w,h;
struct sp
{
    int x,y;
};
sp a[m1+3][m2+3][5];
int l[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,lu;
    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;
        l[xi][yi]++;
        lu=l[xi][yi];
        a[xi][yi][lu]=tm;
        l[xi][yj]++;
        lu=l[xi][yj];
        a[xi][yj][lu]=tm;
        l[xj][yi]++;
        lu=l[xj][yi];
        a[xj][yi][lu]=tm;
        l[xj][yj]++;
        lu=l[xj][yj];
        a[xj][yj][lu]=tm;
    }
    for(i=1; i<=m; i++)
    {
        scanf("%d%d",&x,&y);
        xi=(x/w)%m1;
        yi=(y/h)%m2;
        for(j=l[xi][yi];j>=1;j--)
        {
            tm=a[xi][yi][j];
            if(tm.x<=x && x<=tm.x+w && tm.y<=y && y<=tm.y+h)
                break;
        }
        if(j>=1)
            nr++;
    }
    printf("%d\n",nr);
    return 0;
}