Cod sursa(job #121536)

Utilizator alex3el_n2oAlex Vladescu alex3el_n2o Data 8 ianuarie 2008 22:30:51
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 5.54 kb
#include <stdio.h>
FILE *f=fopen("rj.in","r"), *g=fopen("rj.out","w");
int y[100][100],z[100][100];
struct coada
{
int a,b;
} cod1[1000],cod2[1000];
char x[103][103];
int main()
{
int min=1000,poz1,poz2,in1,in2,sf1,sf2,m,n,i,j,RI,RJ,JI,JJ;
fscanf(f,"%d %d\n",&m,&n);
for (i=1;i<=m;i++)
	for (j=1;j<=n;j++)
		{
		fscanf(f,"%c",&x[i][j]);
		if ((x[i][j]=='\n')&&(j<n))
			fscanf(f,"%c",&x[i][j]);
		if ((x[i][j]=='\n')&&(j==n))
			x[i][j]=' ';

		if (x[i][j]=='R') {
			RI=i;
			RJ=j;
			}
		if (x[i][j]=='J') {
			JI=i;
			JJ=j;
			}
		}
for (i=0;i<=n+1;i++)
	x[0][i]='X';
for (i=1;i<=m+1;i++)
	x[n+1][i]='X';
for (i=n;i>=0;i--)
	x[m+1][i]='X';
for (i=m-1;i>=0;i--)
	x[0][i]='X';
cod1[1].a=RI;
cod1[1].b=RJ;
cod2[1].a=JI;
cod2[1].b=JJ;
in1=1;
in2=1;
sf1=1;
sf2=1;
x[RI][RJ]='r';
while (in1<=sf1)
	{
	 if ((x[cod1[in1].a+1][cod1[in1].b]!='X')&&(cod1[in1].a!=m)&&(x[cod1[in1].a+1][cod1[in1].b]!='r'))
		{
		cod1[++sf1].a=cod1[in1].a+1;
		cod1[sf1].b=cod1[in1].b;
		y[cod1[sf1].a][cod1[sf1].b]=y[cod1[in1].a][cod1[in1].b]+1;
		x[cod1[in1].a+1][cod1[in1].b]='r';
		}
	 if ((x[cod1[in1].a+1][cod1[in1].b+1]!='X')&&(cod1[in1].a!=m)&&(cod1[in1].b!=n)&&(x[cod1[in1].a+1][cod1[in1].b+1]!='r'))
		{
		cod1[++sf1].a=cod1[in1].a+1;
		cod1[sf1].b=cod1[in1].b+1;
		y[cod1[sf1].a][cod1[sf1].b]=y[cod1[in1].a][cod1[in1].b]+1;
		x[cod1[in1].a+1][cod1[in1].b+1]='r';
		}
	 if ((x[cod1[in1].a-1][cod1[in1].b-1]!='X')&&(cod1[in1].a!=1)&&(cod1[in1].b!=1)&&(x[cod1[in1].a-1][cod1[in1].b-1]!='r'))
		{
		cod1[++sf1].a=cod1[in1].a-1;
		cod1[sf1].b=cod1[in1].b-1;
		y[cod1[sf1].a][cod1[sf1].b]=y[cod1[in1].a][cod1[in1].b]+1;
		x[cod1[in1].a-1][cod1[in1].b-1]='r';
		}
	 if ((x[cod1[in1].a+1][cod1[in1].b-1]!='X')&&(cod1[in1].a!=m)&&(cod1[in1].b!=1)&&(x[cod1[in1].a+1][cod1[in1].b-1]!='r'))
		{
		cod1[++sf1].a=cod1[in1].a+1;
		cod1[sf1].b=cod1[in1].b-1;
		y[cod1[sf1].a][cod1[sf1].b]=y[cod1[in1].a][cod1[in1].b]+1;
		x[cod1[in1].a+1][cod1[in1].b-1]='r';
		}
	 if ((x[cod1[in1].a-1][cod1[in1].b+1]!='X')&&(cod1[in1].a!=1)&&(cod1[in1].b!=n)&&(x[cod1[in1].a-1][cod1[in1].b+1]!='r'))
		{
		cod1[++sf1].a=cod1[in1].a-1;
		cod1[sf1].b=cod1[in1].b+1;
		y[cod1[sf1].a][cod1[sf1].b]=y[cod1[in1].a][cod1[in1].b]+1;
		x[cod1[in1].a-1][cod1[in1].b+1]='r';
		}

	 if ((x[cod1[in1].a][cod1[in1].b+1]!='X')&&(cod1[in1].b!=n)&&(x[cod1[in1].a][cod1[in1].b+1]!='r'))
		{
		cod1[++sf1].a=cod1[in1].a;
		cod1[sf1].b=cod1[in1].b+1;
		y[cod1[sf1].a][cod1[sf1].b]=y[cod1[in1].a][cod1[in1].b]+1;
		x[cod1[in1].a][cod1[in1].b+1]='r';
		}
	 if ((x[cod1[in1].a-1][cod1[in1].b]!='X')&&(cod1[in1].a!=1)&&(x[cod1[in1].a-1][cod1[in1].b]!='r'))
		{
		cod1[++sf1].a=cod1[in1].a-1;
		cod1[sf1].b=cod1[in1].b;
		y[cod1[sf1].a][cod1[sf1].b]=y[cod1[in1].a][cod1[in1].b]+1;
		x[cod1[in1].a-1][cod1[in1].b]='r';
		}
	 if ((x[cod1[in1].a][cod1[in1].b-1]!='X')&&(cod1[in1].b!=1)&&(x[cod1[in1].a][cod1[in1].b-1]!='r'))
		{
		cod1[++sf1].a=cod1[in1].a;
		cod1[sf1].b=cod1[in1].b-1;
		y[cod1[sf1].a][cod1[sf1].b]=y[cod1[in1].a][cod1[in1].b]+1;
		x[cod1[in1].a][cod1[in1].b-1]='r';
		}
	in1++;

	}
x[JI][JJ]='j';
while (in2<=sf2)

	{
	 if ((x[cod2[in2].a+1][cod2[in2].b]!='X')&&(cod2[in2].a!=m)&&(x[cod2[in2].a+1][cod2[in2].b]!='j'))
		{
		cod2[++sf2].a=cod2[in2].a+1;
		cod2[sf2].b=cod2[in2].b;
		z[cod2[sf2].a][cod2[sf2].b]=z[cod2[in2].a][cod2[in2].b]+1;
		x[cod2[in2].a+1][cod2[in2].b]='j';
		}
	 if ((x[cod2[in2].a+1][cod2[in2].b+1]!='X')&&(cod2[in2].a!=m)&&(cod2[in2].b!=n)&&(x[cod2[in2].a+1][cod2[in2].b+1]!='j'))
		{
		cod2[++sf2].a=cod2[in2].a+1;
		cod2[sf2].b=cod2[in2].b+1;
		z[cod2[sf2].a][cod2[sf2].b]=z[cod2[in2].a][cod2[in2].b]+1;
		x[cod2[in2].a+1][cod2[in2].b+1]='j';
		}
	 if ((x[cod2[in2].a-1][cod2[in2].b-1]!='X')&&(cod2[in2].a!=1)&&(cod2[in2].b!=1)&&(x[cod2[in2].a-1][cod2[in2].b-1]!='j'))
		{
		cod2[++sf2].a=cod2[in2].a-1;
		cod2[sf2].b=cod2[in2].b-1;
		z[cod2[sf2].a][cod2[sf2].b]=z[cod2[in2].a][cod2[in2].b]+1;
		x[cod2[in2].a-1][cod2[in2].b-1]='j';
		}
	 if ((x[cod2[in2].a+1][cod2[in2].b-1]!='X')&&(cod2[in2].a!=m)&&(cod2[in2].b!=1)&&(x[cod2[in2].a+1][cod2[in2].b-1]!='j'))
		{
		cod2[++sf2].a=cod2[in2].a+1;
		cod2[sf2].b=cod2[in2].b-1;
		z[cod2[sf2].a][cod2[sf2].b]=z[cod2[in2].a][cod2[in2].b]+1;
		x[cod2[in2].a+1][cod2[in2].b-1]='j';
		}
	 if ((x[cod2[in2].a-1][cod2[in2].b+1]!='X')&&(cod2[in2].a!=1)&&(cod2[in2].b!=n)&&(x[cod2[in2].a-1][cod2[in2].b+1]!='j'))
		{
		cod2[++sf2].a=cod2[in2].a-1;
		cod2[sf2].b=cod2[in2].b+1;
		z[cod2[sf2].a][cod2[sf2].b]=z[cod2[in2].a][cod2[in2].b]+1;
		x[cod2[in2].a-1][cod2[in2].b+1]='j';
		}

	 if ((x[cod2[in2].a][cod2[in2].b+1]!='X')&&(cod2[in2].b!=n)&&(x[cod2[in2].a][cod2[in2].b+1]!='j'))
		{
		cod2[++sf2].a=cod2[in2].a;
		cod2[sf2].b=cod2[in2].b+1;
		z[cod2[sf2].a][cod2[sf2].b]=z[cod2[in2].a][cod2[in2].b]+1;
		x[cod2[in2].a][cod2[in2].b+1]='j';
		}
	 if ((x[cod2[in2].a-1][cod2[in2].b]!='X')&&(cod2[in2].a!=1)&&(x[cod2[in2].a-1][cod2[in2].b]!='j'))
		{
		cod2[++sf2].a=cod2[in2].a-1;
		cod2[sf2].b=cod2[in2].b;
		z[cod2[sf2].a][cod2[sf2].b]=z[cod2[in2].a][cod2[in2].b]+1;
		x[cod2[in2].a-1][cod2[in2].b]='j';
		}
	 if ((x[cod2[in2].a][cod2[in2].b-1]!='X')&&(cod2[in2].b!=1)&&(x[cod2[in2].a][cod2[in2].b-1]!='j'))
		{
		cod2[++sf2].a=cod2[in2].a;
		cod2[sf2].b=cod2[in2].b-1;
		z[cod2[sf2].a][cod2[sf2].b]=z[cod2[in2].a][cod2[in2].b]+1;
		x[cod2[in2].a][cod2[in2].b-1]='j';
		}
	in2++;

	}
for (i=1;i<=m;i++)
	for (j=1;j<=n;j++)
		{
		if ((y[i][j]==z[i][j])&&(min>y[i][j])&&(y[i][j]>1))
			{
			poz1=i;
			poz2=j;
			min=y[i][j];
			}
		}
fprintf(g,"%d %d %d\n",min+1,poz1,poz2);
return 0;
}