Pagini recente » Cod sursa (job #493556) | Istoria paginii utilizator/lary_kiss007 | Istoria paginii runda/tema_grf1 | Cod sursa (job #2007971) | Cod sursa (job #326897)
Cod sursa(job #326897)
#include <cstdio>
#include <vector>
using namespace std;
#define file_in "ograzi.in"
#define file_out "ograzi.out"
#define Nmax 50100
#define Mod 666013
#define i1 199
#define i2 211
#define pb push_back
struct coord
{
int x1,y1;
}p[Nmax],q;
int n,nr,j,xx,yy,w,h,m,px,py;
vector<unsigned short> c[Mod];
int ok(int c1, int c2)
{
int i,ll,aux;
aux=(c1*i1+c2*i2)%Mod;
ll=c[aux].size();
for (i=0;i<ll;++i)
{
if ((p[c[aux][i]].x1<=xx) && (xx<=p[c[aux][i]].x1+w)
&& (p[c[aux][i]].y1<=yy) && (yy<=p[c[aux][i]].y1+h))
return 1;
}
return 0;
}
int main()
{
int i,aux,j,l;
char s[20];
freopen(file_in,"r",stdin);
freopen(file_out,"w",stdout);
scanf("%d %d %d %d", &n,&m,&w,&h);
for (i=1;i<=n;++i)
{
//scanf("%d %d", &p[i].x1,&p[i].y1);
fgets(s,20,stdin);
l=strlen(s)-2;
for (j=0;s[j]!=' ';j++)
p[i].x1=p[i].x1*10+s[j]-'0';
for (j++;j<=l;j++)
p[i].y1=p[i].y1*10+s[j]-'0';
q.x1=p[i].x1/w;
q.y1=p[i].y1/h;
aux=(q.x1*i1+q.y1*i2)%Mod;
c[aux].pb(i);
}
//sort(p+1,p+n+1,cmp);
nr=0;
for (i=1;i<=m;++i)
{
fgets(s,20,stdin);
l=strlen(s)-2;
xx=yy=0;
for (j=0;s[j]!=' ';j++)
xx=xx*10+s[j]-'0';
for (j++;j<=l;j++)
yy=yy*10+s[j]-'0';
px=xx/w;
py=yy/h;
if (ok(px,py) || ok(px-1,py) || ok(px,py-1) || ok(px-1,py-1))
nr++;
}
printf("%d", nr);
fclose(stdin);
fclose(stdout);
return 0;
}