Pagini recente » Cod sursa (job #2021722) | Cod sursa (job #952848) | Cod sursa (job #534028)
Cod sursa(job #534028)
#include <fstream>
#define INF 10001
using namespace std;
int n,m,pozx,pozy,mi;
int J[105][105],R[105][105];
int dl[9]={-1,-1,0,1,1,1,0,-1};
int dc[9]={0,1,1,1,0,-1,-1,-1};
ifstream f("rj.in");
ofstream g("rj.out");
void citire()
{
char c;
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==' ')
{
J[i][j]=INF;
R[i][j]=INF;
}
else if (c=='X')
{
J[i][j]=-1;
R[i][j]=-1;
}
else if (c=='R')
{
R[i][j]=0;
J[i][j]=INF;
}
else if (c=='J')
{
R[i][j]=INF;
J[i][j]=0;
}
}
f.get(c);
}
}
void lee(int x[105][105])
{
int ok=1,l,c,d;
while (ok)
{
ok=0;
for (int i=1;i<=n;++i)
for (int j=1;j<=m;++j)
if (x[i][j]!=-1 && x[i][j]!=INF)
for (d=0;d<=8;++d)
{
l=i+dl[d];
c=j+dc[d];
if (x[l][c]>x[i][j]+1 && l<=n && c<=m)
{
x[l][c]=x[i][j]+1;
ok=1;
}
}
}
}
void rezolva()
{
mi=INF;
for (int i=1;i<=n;++i)
for (int j=1;j<=m;++j)
if (R[i][j]==J[i][j] && J[i][j]!=INF && J[i][j]!=-1 && J[i][j]+1<mi)
{
mi=J[i][j]+1;
pozx=i;
pozy=j;
}
g<<mi<<" "<<pozx<<" "<<pozy;
}
int main()
{
citire();
lee(J);
lee(R);
rezolva();
f.close();
g.close();
return 0;
}