Pagini recente » Cod sursa (job #1689754) | Cod sursa (job #1447137) | Cod sursa (job #1649944) | Cod sursa (job #2874498) | Cod sursa (job #462680)
Cod sursa(job #462680)
#include <fstream>
using namespace std;
struct punct{int lin,col;};
int a[1<<7][1<<7],b[1<<7][1<<7],n,m;
char s[1<<7][1<<7];
punct coada[1<<21];
const int dl[]={-1,0,1,0};
const int dc[]={0,1,0,-1};
ifstream in("rj.in");
ofstream out("rj.out");
void lee(int v[][1<<7],punct x)
{
memset(v,0,sizeof(int));
int i,p=0,u=0;
punct y;
coada[++u]=x;
while (p<u)
for (i=0,x=coada[++p];i<4;i++)
{
y.lin=x.lin+dl[i];
y.col=x.col+dc[i];
if (!v[y.lin][y.col] && s[y.lin][y.col]==' ')
{
v[y.lin][y.col]=v[x.lin][x.col]+1;
coada[++u]=y;
}
}
}
int main()
{
int i,j,x,y;
punct r,q;
in>>n>>m>>ws;
for (i=1;i<=n;i++)
in.getline(s[i]+1,m+1);
for (i=0;i<=n+1;i++)
s[i][0]=s[i][m+1]='X';
for (i=0;i<=m+1;i++)
s[0][i]=s[n+1][i]='X';
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
{
if (s[i][j]=='R')
{
r.lin=i;
r.col=j;
}
if (s[i][j]=='J')
{
q.lin=i;
q.col=j;
}
}
lee(a,r);
lee(b,q);
a[0][0]=100000;
x=y=0;
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
if (a[i][j]==b[i][j] && a[i][j]>a[x][y])
{
x=i;
y=j;
}
out<<a[x][y]<<" "<<x<<" "<<y<<"\n";
return 0;
}