Pagini recente » Cod sursa (job #1693870) | Cod sursa (job #623430) | Cod sursa (job #2395369) | Cod sursa (job #1365206) | Cod sursa (job #1771210)
#include <iostream>
#include <cstdio>
#include <climits>
using namespace std;
int i,j,n,m, a[100][100],p,u,b[100][100],nr,x,y,d[100][2],k,lin1, lin2,col1,col2,mi,lmi,cmi;
char c,s[105];
int main()
{
/*f>>n>>m;
f.get(c);
for(int i=1; i<=n; i++)
for(int j=1; j<=m; j++)
{
f.get(c);
if(c=='R') a[i][j]=-2,lin1=i,col1=j;
else if(c=='J') b[i][j]=-3,lin2=i,col2=j;
else if(c=='X') a[i][j]=b[i][j]= -1;
}*/
freopen("rj.in","r",stdin);//redefinesc tast ca fiin date.in
freopen("rj.out","w",stdout);
scanf("%d%d\n",&n,&m);
mi=INT_MAX;
for (i=1; i<=n; i++)
{
gets(s+1);
for (j=1; j<=m; j++)
if (s[j]=='R') a[i][j]=-2,lin1=i,col1=j;
else if (s[j]=='J') b[i][j]=-3,lin2=i,col2=j;
else if (s[j]=='X') a[i][j]=b[i][j]=-1;
}
{
p=1;
u=1;
d[p][0]=lin1;
d[p][1]=col1;
a[lin1][col1]=1;
while(p<=u)
{
x=d[p][0];
y=d[p][1];
k=a[x][y];
if(x>1 && a[x-1][y]==0)
{
u++;
d[u][0]=x-1;
d[u][1]=y;
a[x-1][y]=k+1;
}
if(y<m && a[x][y+1]==0)
{
u++;
d[u][0]=x;
d[u][1]=y+1;
a[x][y+1]=k+1;;
}
if(x<n && a[x+1][y]==0)
{
u++;
d[u][0]=x+1;
d[u][1]=y;
a[x+1][y]=k+1;
}
if(y>1 && a[x][y-1]==0)
{
u++;
d[u][0]=x;
d[u][1]=y-1;
a[x][y-1]=k+1;
}
if(y>1 && x>1 && a[x-1][y-1]==0)
{
u++;
d[u][0]=x-1;
d[u][1]=y-1;
a[x-1][y-1]=k+1;
}
if(y<m && x>1 && a[x-1][y+1]==0)
{
u++;
d[u][0]=x-1;
d[u][1]=y+1;
a[x-1][y+1]=k+1;
}
if(y<m && x<n && a[x+1][y+1]==0)
{
u++;
d[u][0]=x+1;
d[u][1]=y+1;
a[x+1][y+1]=k+1;
}
if(y>1 && x<n && a[x+1][y-1]==0)
{
u++;
d[u][0]=x+1;
d[u][1]=y-1;
a[x+1][y-1]=k+1;
}
p++;
}
}
{
p=1;
u=1;
d[p][0]=lin2;
d[p][1]=col2;
b[lin2][col2]=1;
while(p<=u)
{
x=d[p][0];
y=d[p][1];
k=b[x][y];
if(x>1 && b[x-1][y]==0)
{
u++;
d[u][0]=x-1;
d[u][1]=y;
b[x-1][y]=k+1;
}
if(y<m && a[x][y+1]==0)
{
u++;
d[u][0]=x;
d[u][1]=y+1;
b[x][y+1]=k+1;;
}
if(x<n && b[x+1][y]==0)
{
u++;
d[u][0]=x+1;
d[u][1]=y;
b[x+1][y]=k+1;
}
if(y>1 && b[x][y-1]==0)
{
u++;
d[u][0]=x;
d[u][1]=y-1;
b[x][y-1]=k+1;
}
if(y>1 && x>1 && b[x-1][y-1]==0)
{
u++;
d[u][0]=x-1;
d[u][1]=y-1;
b[x-1][y-1]=k+1;
}
if(y<m && x>1 && b[x-1][y+1]==0)
{
u++;
d[u][0]=x-1;
d[u][1]=y+1;
b[x-1][y+1]=k+1;
}
if(y<m && x<n && b[x+1][y+1]==0)
{
u++;
d[u][0]=x+1;
d[u][1]=y+1;
b[x+1][y+1]=k+1;
}
if(y>1 && x<n && b[x+1][y-1]==0)
{
u++;
d[u][0]=x+1;
d[u][1]=y-1;
b[x+1][y-1]=k+1;
}
p++;
}
}
for(int i=1; i<=n; i++)
for(int j=1; j<=m; j++)
{
if(a[i][j]==b[i][j] && a[i][j]>=1)
{if(a[i][j]<mi)
{
mi=a[i][j];
lmi=i;
cmi=j;
}
else {if(a[i][j]==mi && i<lmi)
{
lmi=i;
cmi=j;
}
else if(a[i][j]==mi && i==lmi && j<cmi) cmi=j;}}
}
printf("%d %d %d",mi,lmi,cmi);
}