Pagini recente » Cod sursa (job #1670838) | Cod sursa (job #581464) | Cod sursa (job #1821916) | Cod sursa (job #410877) | Cod sursa (job #673119)
Cod sursa(job #673119)
#include<fstream>
using namespace std;
fstream fin("rj.in",ios::in),fout("rj.out",ios::out);
char x[120][120];
int n,m,ro[120][120],jul[120][120];
void leero(int i,int j,int ro[][120])
{
//1
if(i>=1&&ro[i][j]+1<ro[i-1][j])
{
ro[i-1][j]=ro[i][j]+1;
leero(i-1,j,ro);
}
if(i>=1&&j<=m&&ro[i][j]+1<ro[i-1][j+1])
{
ro[i-1][j+1]=ro[i][j]+1;
leero(i-1,j+1,ro);
}
//2
if(j<=m&&ro[i][j]+1<ro[i][j+1])
{
ro[i][j+1]=ro[i][j]+1;
leero(i,j+1,ro);
}
if(j<=m&&i<=n&&ro[i][j]+1<ro[i+1][j+1])
{
ro[i+1][j+1]=ro[i][j]+1;
leero(i+1,j+1,ro);
}
//3
if(i<=n&&ro[i][j]+1<ro[i+1][j])
{
ro[i+1][j]=ro[i][j]+1;
leero(i+1,j,ro);
}
if(i<=n&&j>=1&&ro[i][j]+1<ro[i+1][j-1])
{
ro[i+1][j-1]=ro[i][j]+1;
leero(i+1,j-1,ro);
}
//4
if(j>=1&&ro[i][j]+1<ro[i][j-1])
{
ro[i][j-1]=ro[i][j]+1;
leero(i,j-1,ro);
}
if(j>=1&&i>=1&&ro[i][j]+1<ro[i-1][j-1])
{
ro[i-1][j-1]=ro[i][j]+1;
leero(i-1,j-1,ro);
}
}
int main()
{
int i,j,val,ri,rj,ji,jj,cat,min;
fin>>n>>m;
fin.get();
val=n*m+1;
for(i=1;i<=n;i++)
{
fin.getline(x[i]+1,102);
for(j=1;j<=m;j++)
{
if(x[i][j]==' ')
{
jul[i][j]=ro[i][j]=val;
}
if(x[i][j]=='X')
jul[i][j]=ro[i][j]=-1;
if(x[i][j]=='R')
{
ro[i][j]=0;
ri=i;
rj=j;
}
if(x[i][j]=='J')
{
jul[i][j]=0;
ji=i;
jj=j;
}
}
}
leero(ri,rj,ro);
leero(ji,jj,jul);
min=val;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
if(ro[i][j]==jul[i][j]&&ro[i][j]!=-1&&jul[i][j]!=-1&&ro[i][j]!=0&&ro[i][j]<min)
{
ri=i;
rj=j;
min=ro[i][j];
}
}
}
fout<<min+1<<" "<<ri<<" "<<rj;
fin.close();
fout.close();
return 0;
}