Pagini recente » Cod sursa (job #855845) | Cod sursa (job #2912990) | Cod sursa (job #2483668) | Cod sursa (job #900344) | Cod sursa (job #887680)
Cod sursa(job #887680)
#include <fstream>
using namespace std;
const short int dx[]={0,1,0,-1,1,1,-1,-1};
const short int dy[]={-1,0,1,0,1,-1,-1,1};
short int xR,yR,xJ,yJ;
short int i,j,l,k;
short int matr[103][103],matj[103][103];
short int coada[102*102][2],pas,first,last;
void leeRcoada()
{
short int ii,jj,kappa;
while(first<=last)
{
for(kappa=0;kappa<8;kappa++)
{
ii=coada[first][0]+dx[kappa];
jj=coada[first][1]+dy[kappa];
if(matr[ii][jj]==0)
{
pas=matr[coada[first][0]][coada[first][1]];
pas++;
matr[ii][jj]=pas;
last++;
coada[last][0]=ii;
coada[last][1]=jj;
}
}
first++;
}
}
void leeJcoada()
{
short int ii,jj,kappa;
while(first<=last)
{
for(kappa=0;kappa<8;kappa++)
{
ii=coada[first][0]+dx[kappa];
jj=coada[first][1]+dy[kappa];
if(matj[ii][jj]==0)
{
pas=matj[coada[first][0]][coada[first][1]];
pas++;
matj[ii][jj]=pas;
last++;
coada[last][0]=ii;
coada[last][1]=jj;
}
}
first++;
}
}
int main()
{
ifstream g("rj.in");
char v[101];
g>>k>>l;
for(i=0;i<=k;i++)
{
g.getline(v,l+1);
for(j=1;j<=l;j++)
{
if(v[j-1]=='X'){matr[i][j]=-1;
matj[i][j]=-1;}
else if(v[j-1]==' '){matr[i][j]=0;
matj[i][j]=0;}
else if(v[j-1]=='R')
{
matr[i][j]=0;
xR=i;
yR=j;
}
else if(v[j-1]=='J')
{
matj[i][j]=0;
xJ=i;
yJ=j;
}
}
}
//bordizification
for(i=0;i<=(l<k?k:l);i++)
{
matj[i][0]=-1;
matj[i][k+1]=-1;
matj[0][i]=-1;
matj[l+1][i]=-1;
matr[i][0]=-1;
matr[i][k+1]=-1;
matr[0][i]=-1;
matr[l+1][i]=-1;
}
coada[0][0]=xR;
coada[0][1]=yR;
leeRcoada();
first=0;last=0;
coada[0][0]=xJ;
coada[0][1]=yJ;
leeJcoada();
ofstream o("rj.out");
/*for(i=1;i<=k;i++)
{
o<<endl;
for(j=1;j<=l;j++)
o<<matr[i][j];}
o<<endl<<endl<<endl;
for(i=1;i<=k;i++)
{
o<<endl;
for(j=1;j<=l;j++)
o<<matj[i][j];}
o<<endl<<endl;
*/ xR=0;
for(i=1;i<=k&&xR==0;i++)
for(j=1;j<=l&&xR==0;j++)
if(matr[i][j]==matj[i][j]&&matj[i][j]!=-1&&matr[i][j]!=-1&&matj[i][j]!=0&&matr[i][j]!=0)
{xR=1;o<<matr[i][j]+1<<" "<<i<<" "<<j;}
o.close();
g.close();
return 0;
}