Cod sursa(job #253812)

Utilizator AndreyPAndrei Poenaru AndreyP Data 6 februarie 2009 12:36:57
Problema Grendizer Scor 20
Compilator cpp Status done
Runda Stelele Informaticii 2009, clasele 9-10, ziua 1 Marime 1.87 kb
#include<stdio.h>
#define N 100010
#define NN 100
struct sistem
{
	int x,y;
};
int n,m;
int xd,yd,r;
sistem v[N];
inline int modul(int x)
{
	if(x<0)
		return -x;
	return x;
}
inline void citesc(int &x,int &y)
{
	char c[NN];
	fgets(c,NN,stdin);
	bool semn=false;
	int aux=0;
	int i=0;
	if(c[i]=='-')
	{
		semn=true;
		i=1;
	}
	for(; c[i]>='0' && c[i]<='9'; ++i)
		aux=aux*10+c[i]-'0';
	if(semn)
		aux=-aux;
	semn=false;
	x=aux;
	aux=0;
	++i;
	if(c[i]=='-')
	{
		semn=true;
		++i;
	}
	for(; c[i]>='0' && c[i]<='9'; ++i)
		aux=aux*10+c[i]-'0';
	if(semn)
		aux=-aux;
	y=aux;
}
inline void citesc()
{
	char c[NN];
	fgets(c,NN,stdin);
	int aux=0,i=0;
	bool semn=false;
	if(c[i]=='-')
	{
		semn=true;
		++i;
	}
	for(; c[i]>='0' && c[i]<='9'; ++i)
		aux=aux*10+c[i]-'0';
	if(semn)
		aux=-aux;
	xd=aux;
	aux=0;
	semn=false;
	++i;
	if(c[i]=='-')
	{
		semn=true;
		++i;
	}
	for(; c[i]>='0' && c[i]<='9'; ++i)
		aux=aux*10+c[i]-'0';
	if(semn)
		aux=-aux;
	yd=aux;
	aux=0;
	semn=false;
	++i;
	for(; c[i]>='0' && c[i]<='9'; ++i)
		aux=aux*10+c[i]-'0';
	r=aux;
}
inline void citire()
{
	scanf("%d%d\n",&n,&m);
	for(int i=0; i<n; ++i)
		citesc(v[i].x,v[i].y);
}
inline void rezolva()
{
	int rez=0;
	for(int i=0; i<n; ++i)
	{
		if(modul(xd-v[i].x)+modul(yd-v[i].y)==r)
			++rez;
	}
	if(!rez)
	{
		fputs("0\n",stdout);
		return;
	}
	char c[20];
	int nr=0;
	while(rez)
	{
		c[++nr]=rez%10+'0';
		rez/=10;
	}
	for(int i=1,j=nr; i<j; ++i,--j)
	{
		char aux=c[i];
		c[i]=c[j];
		c[j]=aux;
	}
	c[nr+1]='\n';
	c[nr+2]='\0';
	fputs(c+1,stdout);
}
int main()
{
	freopen("grendizer.in","r",stdin);
	freopen("grendizer.out","w",stdout);
	citire();
	//for(int i=0; i<n; ++i)
	//	printf("%d %d\n",v[i].x,v[i].y);
	for(; m; --m)
	{
		citesc();
		//printf("%d %d %d\n",xd,yd,r);
		rezolva();
	}
	return 0;
}