Pagini recente » Cod sursa (job #1045088) | Cod sursa (job #2440292) | Cod sursa (job #2166553) | Cod sursa (job #411593) | Cod sursa (job #686923)
Cod sursa(job #686923)
#include<fstream>
#include<iomanip>
using namespace std;
int romt[110][110],jult[110][110];
char harta[110][110];
struct {int i; int j; int t;} x[1000],aux;
struct {int ii; int jj;} C[1000],aux1;
int n,m;
int xi[]={-1, 0, 1, 0,-1,-1, 1, 1};
int xj[]={ 0, 1, 0,-1,-1, 1, 1,-1};
void read_data()
{int i;
ifstream g("rj.in");
g>>n>>m;
g.getline(harta[0],m+1);
for(i=0;i<n;i++)
g.getline(harta[i],m+1);
g.close();
}
int check(int a,int b)
{int v;
if((a>=0)&&(b>=0)&&(a<n)&&(b<m)&&(harta[a][b]==' '))
v=1;
else
v=0;
return v;
}
void solution()
{int i,j,ok,k,ii,jj;
int inc,sf;
inc=sf=0; ok=0;
for(i=0;((i<n)&&(ok==0));i++)
for(j=0;((j<m)&&(ok==0));j++)
if(harta[i][j]=='R')
ok=1;
romt[i-1][j-1]=1;
C[inc].ii=i-1;
C[inc].jj=j-1;
while(inc<=sf)
{aux1=C[inc++];
for(k=0;k<8;k++)
{ii=aux1.ii+xi[k];
jj=aux1.jj+xj[k];
if(check(ii,jj)==1)
if(romt[ii][jj]==0)
{romt[ii][jj]=romt[aux1.ii][aux1.jj]+1;
sf++;
C[sf].ii=ii;
C[sf].jj=jj;
}
}
}
inc=sf=0; ok=0;
for(i=0;((i<n)&&(ok==0));i++)
for(j=0;((j<m)&&(ok==0));j++)
if(harta[i][j]=='J')
ok=1;
jult[i-1][j-1]=1;
C[inc].ii=i-1;
C[inc].jj=j-1;
while(inc<=sf)
{aux1=C[inc++];
for(k=0;k<8;k++)
{ii=aux1.ii+xi[k];
jj=aux1.jj+xj[k];
if(check(ii,jj)==1)
if(jult[ii][jj]==0)
{jult[ii][jj]=jult[aux1.ii][aux1.jj]+1;
sf++;
C[sf].ii=ii;
C[sf].jj=jj;
}
}
}
k=-1;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if((romt[i][j]==jult[i][j])&&(romt[i][j]!=0))
{k++;
x[k].i=i;
x[k].j=j;
x[k].t=romt[i][j];}
aux=x[0];
for(i=1;i<=k;i++)
{if(aux.t>x[i].t)
aux=x[i];
if((aux.t==x[i].t)&&(aux.i>x[i].i))
aux=x[i];
if((aux.t==x[i].t)&&(aux.i==x[i].i)&&(aux.j>x[i].j))
aux=x[i];
}
}
void display()
{ofstream t("rj.out");
t<<aux.t<<" "<<aux.i+1<<" "<<aux.j+1;
t.close();
}
int main()
{
read_data();
solution();
display();
return 0;
}