Cod sursa(job #1138377)

Utilizator bogdanboboc97Bogdan Boboc bogdanboboc97 Data 9 martie 2014 22:20:41
Problema Rj Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.84 kb
#include <iostream>
#include <fstream>
#include <string.h>
#define MXMX 10003

using namespace std;

ifstream fin("rj.in");
ofstream fout("rj.out");

int n,m,i,j,a[102][102],b[102][102],prim,ultim, mx,linie,coloana,k,x[]={-1,0,1,0,-1,-1,1,1},y[]={0,1,0,-1,-1,1,1,-1},l1,l2,c1,c2;
char s[103];
struct coada

{
	int lin, col;
}v,p,c[10001],p1;

int main ()
{
	mx=MXMX;
	fin>>n>>m;
	fin.get();
	for(i=1;i<=n;i++)
		{
			fin.get(s,103);
			fin.get();
			for(j=0;j<m;j++)
				{
					if(s[j]=='X')
						{
							a[i][j+1]=-1;
							b[i][j+1]=-1;
						}
					else if(s[j]==' ')
						{
							a[i][j+1]=0;
							b[i][j+1]=0;
						}
					else if(s[j]=='R'||s[j]=='J')
						{
							if(s[j]=='R')
								{
									p.lin=l1=i;
									p.col=c1=j+1;
									a[i][j+1]=1;
								}
							else
								{
									p1.lin=l2=i;
									p1.col=c2=j+1;
									b[i][j+1]=1;
								}
						}
				}
		}
	for(i=0;i<=n+1;i++)
		a[i][0]=a[i][m+1]=b[i][0]=b[i][m+1]=-1;
	for(i=0;i<=m+1;i++)
		a[0][i]=a[n+1][i]=b[0][i]=b[n+1][i]=-1;
	c[0]=p;
	while(prim<=ultim)
		{
			p=c[prim];
			prim++;
			for(k=0;k<8;k++)
				{
					v.lin=p.lin+x[k];
					v.col=p.col+y[k];
					if(a[v.lin][v.col]==0)
						{
							a[v.lin][v.col]=a[p.lin][p.col]+1;
							ultim++;
							c[ultim]=v;
						}
				}
		}
	prim=ultim=0;
	c[0]=p1;
	while(prim<=ultim)
		{
			p1=c[prim];
			prim++;
			for (k=0;k<8;k++)
				{
					v.lin=p1.lin+x[k];
					v.col=p1.col+y[k];
					if (b[v.lin][v.col]==0)
						{
							b[v.lin][v.col]=b[p1.lin][p1.col]+1;
							ultim++;
							c[ultim]=v;
						}
				}
		}
	for(i=1;i<=n;i++)
		for(j=1;j<=m;j++)
			if(a[i][j]==b[i][j]&&a[i][j]!=-1 && a[i][j]<mx && a[i][j]!=0)
				{
					mx=a[i][j];
					linie=i;
					coloana=j;
				}
	fout<<mx<<" "<<linie<<" "<<coloana;
	return 0;
}