Pagini recente » Cod sursa (job #2337625) | Cod sursa (job #148542) | Cod sursa (job #1942999) | Cod sursa (job #2740921) | Cod sursa (job #887725)
Cod sursa(job #887725)
#include <fstream>
#include <iostream>
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[100][100],matj[100][100];
short int coada[100*100][2],pas,first,last;
bool bun(int i,int j)
{
if(i<k&&i>=0&&j<l&&j>=0)
return 1;
return 0;
}
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(bun(ii,jj))
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(bun(ii,jj))
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;
g.getline(v, l+1);
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]=-1;
matj[i][j-1]=-1;}
else if(v[j-1]==' '){matr[i][j-1]=0;
matj[i][j-1]=0;}
else if(v[j-1]=='R')
{
matr[i][j-1]=0;
xR=i;
yR=j-1;
}
else if(v[j-1]=='J')
{
matj[i][j-1]=0;
xJ=i;
yJ=j-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=0;i<k;i++)
{
o<<endl;
for(j=0;j<l;j++)
o<<matr[i][j];}
o<<endl<<endl<<endl;
for(i=0;i<k;i++)
{
o<<endl;
for(j=0;j<l;j++)
o<<matj[i][j];}
o<<endl<<endl;
*/xR=0,yR=7991;
for(i=0;i<k&&xR==0;i++)
for(j=0;j<l&&xR==0;j++)
if(matr[i][j]<yR&&matr[i][j]==matj[i][j]&&matj[i][j]!=-1&&matr[i][j]!=-1&&matj[i][j]!=0&&matr[i][j]!=0)
{xJ=i;yJ=j;yR=matr[i][j];
}
o<<yR+1<<" "<<xJ+1<<" "<<yJ+1;
o.close();
g.close();
return 0;
}