Pagini recente » Profil Papanasi | Cod sursa (job #22336) | Cod sursa (job #32963) | Cod sursa (job #1237931) | Cod sursa (job #146306)
Cod sursa(job #146306)
#include<fstream.h>
#include<string.h>
int a[102][102], b[102][102], n, m, ri, rj, ji, jj;
ifstream f("rj.in");
ofstream g("rj.out");
void read()
{ int i, j;
char c;
f>>n>>m; f.get();
for(i=1; i<=n; i++)
{ for(j=1; j<=m; j++)
{ f.get(c);
if(c=='X')
{ a[i][j]=-1;
b[i][j]=-1;
}
if(c=='R')
{ ri=i; rj=j;
a[i][j]=1;
}
if(c=='J')
{ ji=i; jj=j;
b[i][j]=1;
}
}
f.get();
}
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(i=0; i<=m+1; i++)
{ a[0][i]=-1;
a[n+1][i]=-1;
b[0][i]=-1;
b[n+1][i]=-1;
}
f.close();
}
void coada(int x, int y, int a[102][102])
{ int dii[8]={-1, -1, -1, 0, 0, 1, 1, 1},
djj[8]={-1, 0, 1, -1, 1, -1, 0, 1};
struct
{ char x, y;
} c[20000];
int p=0, u=0, i, di, dj;
c[p].x=x; c[p].y=y;
while(p<=u)
{ x=c[p].x; y=c[p].y;
for(i=0; i<8; i++)
{ di=dii[i]; dj=djj[i];
if(a[x+di][y+dj]>=0)
if(a[x+di][y+dj]+1<a[x][y] || a[x+di][y+dj]==0)
{ a[x+di][y+dj]=a[x][y]+1;
u++;
c[u].x=x+di;
c[u].y=y+dj;
}
}
p++;
}
}
void write()
{ int i, j, min, x, y;
min=30000;
for(i=1; i<=n; i++)
{ for(j=1; j<=m; j++)
{ if(a[i][j]==b[i][j] && a[i][j]>0 && a[i][j]<min)
{ min=a[i][j]; x=i; y=j;
}
}
}
g<<a[x][y]<<' '<<x<<' '<<y<<'\n';
g.close();
}
void solve()
{ coada(ri, rj, a);
coada(ji, jj, b);
}
int main()
{ read();
solve();
write();
return 0;
}