Pagini recente » Cod sursa (job #1397529) | Cod sursa (job #55204) | Cod sursa (job #2024413) | Cod sursa (job #388820) | Cod sursa (job #2999592)
#include <fstream>
using namespace std;
ifstream cin("rj.in");
ofstream cout("rj.out");
int dirL[8]={-1,-1,0,1,1,1,0,-1};
int dirC[8]={0,1,1,1,0,-1,-1,-1};
char x[105];
struct ura{
int l,c;
}coada[10001];
int a[102][102], b[102][102];
int main()
{
int n,m,i,j,inc,sf,lin,col,ok,l1,c1,mini;
///c este caracter si de aia trebuie sa punem char c!!!
char c;
cin>>n>>m;
for(i=1;i<=n;i++)
{
///citesc un enter
cin.get(c);
///citesc toata linia
cin.get(x+1,105);
for(j=1;j<=m;j++)
{
///acum incep sa formez matricea si sa pun primul element din fiecare coada
///primul elem din coada1 este pozitia pe care se afla R
///primul elem din coada2 este pozitia pe care se afla J
if(x[j]=='X')
a[i][j]=b[i][j]=-1;
if(x[j]=='R')
{
a[i][j]=1;
coada[1].l=i;
coada[1].c=j;
b[i][j]=-1;
}
if(x[j]=='J')
{
b[i][j]=1;
l1=i;
c1=j;
a[i][j]=-1;
}
}
}
for(i=0;i<=n+1;i++){
a[i][0]=-1;
a[i][m+1]=-1;
b[i][0]=-1;
b[i][m+1]=-1;
}
for(j=0;j<=m+1;j++)
{
a[0][j]=-1;
a[n+1][j]=-1;
b[0][j]=-1;
b[n+1][j]=-1;
}
inc=sf=1;
// for(i=1;i<=n;i++)
//{
// for(j=1;j<=m;j++)
// cout<<a[i][j]<<" ";
// cout<<"\n";
//}
while(inc<=sf)
{
for(i=0;i<=7;i++)
{
lin=coada[inc].l+dirL[i];
col=coada[inc].c+dirC[i];
if(a[lin][col]==0)
{
a[lin][col]=a[coada[inc].l][coada[inc].c]+1;
sf++;
coada[sf].l=lin;
coada[sf].c=col;
}
}
inc++;
}
inc=sf=1;
coada[inc].l=l1;
coada[inc].c=c1;
while(inc<=sf)
{
for(i=0;i<=7;i++)
{
lin=coada[inc].l+dirL[i];
col=coada[inc].c+dirC[i];
if(b[lin][col]==0)
{
b[lin][col]=b[coada[inc].l][coada[inc].c]+1;
sf++;
coada[sf].l=lin;
coada[sf].c=col;
}
}
inc++;
}
mini=n*m+1;
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]!=0)
{
if(a[i][j]<mini)
{
mini=a[i][j];
l1=i;
c1=j;
}
}
cout<<mini<<" "<<l1<<" "<<c1;
return 0;
}