Pagini recente » Cod sursa (job #207672) | Cod sursa (job #3219092) | Cod sursa (job #3251185) | Cod sursa (job #1055032) | Cod sursa (job #2562486)
#include <fstream>
#include <algorithm>
#include <vector>
#include <cmath>
#define nmax 602
using namespace std;
ifstream fin("grendizer.in");
ofstream fout("grendizer.out");
int n,m,x,y,r,ans;
vector < vector <int> > a;
int bin(int j,int val)
{
int st=0,dr=a[j].size()-1;
while(st<=dr)
{
int mij=(st+dr)/2;
if(a[j][mij]==val)
return true;
else if(a[j][mij]>val)
dr=mij-1;
else
st=mij+1;
}
return false;
}
int main()
{
fin>>n>>m;
a.resize(nmax);
for(int i=1;i<=n;i++)
{
fin>>x>>y;
if(x==0)
a[0].push_back(y);
else if(x>0)
a[x+300].push_back(y);
else
a[-x].push_back(y);
}
for(int i=0;i<=600;i++)
if(a[i].size())
sort(a[i].begin(),a[i].end());
for(int i=1;i<=m;i++)
{
fin>>x>>y>>r;
ans=0;
if(!(x==0 && y==r-abs(0-x)+y))
{
if(bin(0,r-abs(0-x)+y) )
ans++;
}
if(!(x==0 && y==-r+abs(0-x)+y))
{
if(r!=abs(0-x))
if(bin(0,-r+abs(0-x)+y))
ans++;
}
for(int j=1;j<=300;j++)
if(a[j].size())
{
int x1=-j;
if(!(x==x1 && y==r-abs(x1-x)+y))
{
if(bin(j,r-abs(x1-x)+y))
ans++;
}
if(!(x==x1 && y==-r+abs(x1-x)+y))
{
if(r!=abs(x1-x))
if(bin(j,-r+abs(x1-x)+y))
ans++;
}
}
for(int j=301;j<=600;j++)
if(a[j].size())
{
int x1=j-300;
if(!(x==x1 && y==r-abs(x1-x)+y))
{
if(bin(j,r-abs(x1-x)+y))
ans++;
}
if(!(x==x1 && y==-r+abs(x1-x)+y))
{
if(r!=abs(x1-x))
if(bin(j,-r+abs(x1-x)+y))
ans++;
}
}
fout<<ans<<"\n";
}
return 0;
}