Pagini recente » Cod sursa (job #2416816) | Cod sursa (job #1139190) | Cod sursa (job #2343763) | Cod sursa (job #3268027) | Cod sursa (job #295726)
Cod sursa(job #295726)
#include<stdio.h>
struct hash_info{int ii,jj,aa,bb;hash_info *next;};
hash_info *ht[500100],*paux;
int P=499999,n,m,A,B,dr,a,b,i,j,h,cnt,querry();
void readd(),solve();
int main()
{
readd();
solve();
return 0;
}
void readd()
{
freopen("ograzi.in","r",stdin);
freopen("ograzi.out","w",stdout);
scanf("%d%d%d%d",&n,&m,&A,&B);
for(dr=1;dr<=n;dr++)
{
scanf("%d%d",&a,&b);a+=A;b+=B;
i=a/A;if(a%A)i++;
j=b/B;if(b%B)j++;
h=(i+j)%P;
paux=new hash_info;
paux->ii=i;paux->jj=j;
paux->aa=a;paux->bb=b;
paux->next=ht[h];ht[h]=paux;
}
}
void solve()
{
for(;m;m--)cnt+=querry();
printf("%d\n",cnt);
}
int querry()
{
scanf("%d%d",&a,&b);a+=A;b+=B;
i=(2*a-1)/(2*A);j=(2*b-1)/(2*B);
h=(i+j)%P;
for(paux=ht[h];paux;paux=paux->next)
if(paux->aa<=a&&paux->bb<=b&&paux->aa+A>=a&&paux->bb+B>=b)return 1;
i++;
h=(i+j)%P;
for(paux=ht[h];paux;paux=paux->next)
if(paux->aa<=a&&paux->bb<=b&&paux->aa+A>=a&&paux->bb+B>=b)return 1;
j++;
h=(i+j)%P;
for(paux=ht[h];paux;paux=paux->next)
if(paux->aa<=a&&paux->bb<=b&&paux->aa+A>=a&&paux->bb+B>=b)return 1;
i--;
h=(i+j)%P;
for(paux=ht[h];paux;paux=paux->next)
if(paux->aa<=a&&paux->bb<=b&&paux->aa+A>=a&&paux->bb+B>=b)return 1;
return 0;
}