Pagini recente » Borderou de evaluare (job #565596) | Cod sursa (job #2080810) | Cod sursa (job #2546143) | Cod sursa (job #1416019) | Cod sursa (job #1516294)
#include <fstream>
using namespace std;
long long a[105][105],b[105][105],c[100005],d[100005],t,n,m;
ifstream f("rj.in");
ofstream g("rj.out");
int x[]={-1,-1,0,1,1,1,0,-1};
int y[]={0,1,1,1,0,-1,-1,-1};
void bordare( )
{
int i,j;
for(i=0;i<=n+1;i++)
{
a[i][m+1]=-1;
a[i][0]=-1;
}
for(i=0;i<=m+1;i++)
{
a[0][i]=-1;
a[n+1][i]=-1;
}
}
void leer(int o)
{
long long i,x1,y1;
if(o<=t)
{for(i=0;i<=7;i++)
{
x1=c[o]+x[i];
y1=d[o]+y[i];
if(a[x1][y1]==0)
{
t++;
a[x1][y1]=a[c[o]][d[o]]+1;
c[t]=x1;
d[t]=y1;
}
}
leer(o+1);}
}
void leej(int o)
{
int i,x1,y1;
if(o<=t)
{for(i=0;i<=7;i++)
{
x1=c[o]+x[i];
y1=d[o]+y[i];
if(b[x1][y1]==0)
{
t++;
c[t]=x1;
d[t]=y1;
b[x1][y1]=b[c[o]][d[o]]+1;
}
}
leej(o+1);}
}
void co()
{
int minim=1000000,i1,j1,i,j;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
if(a[i][j]==b[i][j] and minim>=a[i][j])
{
if(minim>a[i][j] and a[i][j]>=1)
{
minim=a[i][j];
i1=i;
j1=j;
}
else
{
if(i1>i and j1>j)
{
i1=i;
j1=j;
}
else
if(i1==i)
{
if(j1>j)
j1=j;
}
}
}
}
}
g<<a[i1][j1]<<" "<<i1<<" "<<j1;
}
int main()
{
int i,j,i1,i2,j1,j2;
char e[105];
f>>n;
f>>m;
bordare( );
f.get();
for(i=1;i<=n;i++)
{
f.get(e,102);
// g<<e<<'\n';
f.get();
j=0;
while(e[j])
{
if(e[j]=='X')
a[i][j+1]=-1;
else
if(e[j]=='R')
{
i1=i;
j1=j+1;
}
else
if(e[j]=='J')
{
i2=i;
j2=j+1;
}
j++;
}
}
for(i=0;i<=n+1;i++)
for(j=0;j<=m+1;j++)
b[i][j]=a[i][j];
/* for(i=0;i<=n+1;i++)
{
for(j=0;j<=m+1;j++)
g<<a[i][j]<<' ';
g<<'\n';
}*/
a[i1][j1]=1;
b[i2][j2]=1;
// g<<i1<<" "<<j1<<" "<<i2<<" "<<j2<<'\n';
t=1;
c[1]=i1;
d[1]=j1;
leer(1);
t=1;
c[1]=i2;
d[1]=j2;
leej(1);
/*for(i=0;i<=n+1;i++)
{
for(j=0;j<=m+1;j++)
g<<b[i][j]<<' ';
g<<'\n';
}*/
co();
f.close();
g.close();
return 0;
}