Cod sursa(job #649376)

Utilizator BabutaRaresBabuta Rares Mihai BabutaRares Data 15 decembrie 2011 21:41:19
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.3 kb
#include<stdio.h>
FILE *f=fopen("rj.in","r");
FILE *g=fopen("rj.out","w");
typedef struct{int x,y;}PERECHE;
int a[101][101];
int main()
{
	int ok,dx[]={-1,-1,-1,0,0,1,1,1},dy[]={-1,0,1,-1,1,-1,0,1},n,m,min=2100000000,x,xv,yv,i,j,p=1,u=0,y,b;
	char s;
	PERECHE c[100001];
	fscanf(f,"%d",&n);fscanf(f,"%d",&m);
	for(i=1;i<=n;i++)
	{
		fscanf(f,"%c",&s);
		for(j=1;j<=m;j++)
		{
			
			fscanf(f,"%c",&s);
			if(s=='R')
			{
				a[i][j]=1;
				c[++u].x=i;c[u].y=j;
			}
			if(s=='J')
				a[i][j]=-2;
			if(s==' ')
				a[i][j]=0;
			if(s=='X')
				a[i][j]=-1;			
		}
	}
	while(p<=u)
	{
		x=c[p].x;y=c[p++].y;
		for(i=0;i<=7;i++)
		{
			xv=x+dx[i];
			yv=y+dy[i];
			if(a[xv][yv]==0&&xv!=0&&xv!=n+1&&yv!=0&&yv!=m+1)
			{
				a[xv][yv]=a[x][y]+1;
				c[++u].x=xv;c[u].y=yv;
				if((a[xv-1][yv-1]==-2||a[xv-1][yv]==-2||a[xv-1][yv+1]==-2||a[xv][yv-1]==-2||a[xv][yv+1]==-2||a[xv+1][yv-1]==-2||a[xv+1][yv]==-2||a[xv+1][yv+1]==-2)&&a[xv][yv]<min)
				{
					min=a[xv][yv];
					if(min%2==1)
						b=min/2+2;
					else
						b=min/2+1;
				}
			}
		}
	}
	fprintf(g,"%d",b);
	fprintf(g," ");
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=m;j++)
		if(a[i][j]==b)
		{
			fprintf(g,"%d",i);
			fprintf(g," ");
			fprintf(g,"%d",j);
			ok=1;
			break;
		}
		if(ok==1)
			break;
	}
}