Pagini recente » Cod sursa (job #600387) | Cod sursa (job #1100704) | Cod sursa (job #2122360) | Cod sursa (job #675382) | Cod sursa (job #1813264)
#include <iostream>
#include<fstream>
#include<vector>
using namespace std;
const int mod=99017;
struct ograda
{
int l,c,x[5],y[5];
}aux;
vector<ograda> v[mod+5];
int key,i,j,idx,n,m,xt,yt,xf,yf,ret,w,h,tot;
void ins(int cadran,int lin,int col,int xi,int yi)
{
key=lin%mod;
for(idx=0;idx<v[key].size();idx++)
{
if(v[key][idx].l==lin&&v[key][idx].c==col)
{
v[key][idx].x[cadran]=xi;
v[key][idx].y[cadran]=yi;
return;
}
}
for(j=0;j<=3;j++)
aux.x[j]=aux.y[j]=0;
aux.l=lin,aux.c=col,aux.x[cadran]=xi,aux.y[cadran]=yi;
v[key].push_back(aux);
}
int finds()
{
key=xf%mod;
for(idx=0;idx<v[key].size();idx++)
{
if(v[key][idx].l==xf&&v[key][idx].c==yf)
{
aux=v[key][idx];ret=0;
if(aux.x[0]>=xt&&aux.y[0]>=yt) ret=1;
if(aux.x[1]!=0&&aux.x[1]<=xt&&aux.y[1]>=yt) ret=1;
if(aux.x[2]!=0&&aux.x[2]<=xt&&aux.y[2]<=yt) ret=1;
if(aux.y[3]!=0&&aux.x[3]>=xt&&aux.y[3]<=yt) ret=1;
return ret;
}
}
return 0;
}
int main()
{
ifstream f("ograzi.in");
ofstream g("ograzi.out");
f>>n>>m>>w>>h;
for(i=1;i<=n;i++)
{
f>>xt>>yt;
xt++;yt++;
xf=xt/w;yf=yt/h;
ins(2,xf,yf,xt,yt);
ins(3,xf+1,yf,xt+w,yt);
ins(0,xf+1,yf+1,xt+w,yt+h);
ins(1,xf,yf+1,xt,yt+h);
}
for(i=1;i<=m;i++)
{
f>>xt>>yt;
xt++;yt++;
xf=xt/w;yf=yt/h;
tot+=finds();
}
g<<tot;
return 0;
}