Pagini recente » Cod sursa (job #433003) | Cod sursa (job #1289523) | Cod sursa (job #1950903) | Cod sursa (job #942160) | Cod sursa (job #2798815)
#include <fstream>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int a[110][110],b[110][110];
struct el
{
int lin,col;
};
el ro[110*110];
el ju[110*110];
el dir[8]= {{-1,-1},{-1,0},{-1,1},{0,1},{1,1},{1,0},{1,-1},{0,-1}};
int main()
{
int i,j,n,m,prim=1,ultim=1,x,y,nou_x,nou_y,minim=100000,lm=0,cm=0;
char x5;
fin>>n>>m;
fin.get();
for(i=1; i<=n; i++)
{
for(j=1; j<=m; j++)
{
fin.get(x5);
if(x5=='X') a[i][j]=b[i][j]=-1;
else if(x5=='R')
{
a[i][j]=b[i][j]=1;
ro[prim].lin=i;
ro[prim].col=j;
}
else if(x5=='J')
{
a[i][j]=b[i][j]=1;
ju[prim].lin=i;
ju[prim].col=j;
}
else if(x5==' ') a[i][j]=b[i][j]=0;
}
fin.get();
}
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;
while(prim<=ultim)
{
x=ro[prim].lin;
y=ro[prim].col;
for(i=0; i<=7; i++)
{
nou_x=x+dir[i].lin;
nou_y=y+dir[i].col;
if(a[nou_x][nou_y]==0)
{
ultim++;
ro[ultim].lin=nou_x;
ro[ultim].col=nou_y;
a[nou_x][nou_y]=a[x][y]+1;
}
}
prim++;
}
prim=ultim=1;
while(prim<=ultim)
{
x=ju[prim].lin;
y=ju[prim].col;
for(i=0; i<=7; i++)
{
nou_x=x+dir[i].lin;
nou_y=y+dir[i].col;
if(b[nou_x][nou_y]==0)
{
ultim++;
ju[ultim].lin=nou_x;
ju[ultim].col=nou_y;
b[nou_x][nou_y]=b[x][y]+1;
}
}
prim++;
}
for(i=1; i<=n; i++)
for(j=1; j<=m; j++)
if(a[i][j]==b[i][j] && a[i][j]<minim && a[i][j]!=-1 && a[i][j]!=1 &&a[i][j]!=0)
{
minim=a[i][j];
lm=i;
cm=j;
}
fout<<minim<<" "<<lm<<" "<<cm;
fin.close();
fout.close();
return 0;
}