Cod sursa(job #253877)

Utilizator Alexa_ioana_14Antoche Ioana Alexandra Alexa_ioana_14 Data 6 februarie 2009 13:15:43
Problema Grendizer Scor 10
Compilator cpp Status done
Runda Stelele Informaticii 2009, clasele 9-10, ziua 1 Marime 0.92 kb
#include<stdio.h>
#define N 605
#define M 40002
int a[N][N],n,x[M],y[M],m;
int arie(int x, int y, int r)
{
	int num=0;
	for (int i=0; i<=r; ++i)
	{
		if (a[x-i][y-(r-i)])
		{
			a[x-i][y-(r-i)]=0;
			++num;
		}
		if (a[x-i][y+(r-i)])
		{
			a[x-i][y+(r-i)]=0;
			++num;
		}
		if (a[x+i][y-(r-i)])
		{
			a[x+i][y-(r-i)]=0;
			++num;
		}
		if (a[x+i][y+(r-i)])
		{
			a[x+i][y+(r-i)]=0;
			++num;
		}
	}
	return num;
}
void refac()
{
	for (int i=1; i<=n; ++i)
		a[300+x[i]][300+y[i]]=1;
}
void citire()
{
	freopen("grendizer.in","r",stdin);
	freopen("grendizer.out","w",stdout);
	scanf("%d%d",&n,&m);
	for (int i=1; i<=n; ++i)
	{
		scanf("%d%d",&x[i],&y[i]);
		a[300+x[i]][300+y[i]]=1;
	}
	for (int i=1; i<=m; ++i)
	{
		int x,y,r;
		scanf("%d%d%d",&x,&y,&r);
		if (r>300) printf("0\n");
		else
		printf("%d\n",arie(x+300,y+300,r));
		refac();
	}
}
int main()
{
	citire();
	return 0;
}