Pagini recente » Cod sursa (job #2337999) | Cod sursa (job #1650670) | Cod sursa (job #2523902) | Cod sursa (job #821765) | Cod sursa (job #889311)
Cod sursa(job #889311)
#include <fstream>
#include <iostream>
using namespace std;
int n,m,matr[100][100],matj[100][100],xR,xJ,yR,yJ,x[1000],pas,y[1000],first ,last;
const short int dx[]={0,1,0,-1,1,1,-1,-1};
const short int dy[]={-1,0,1,0,1,-1,-1,1};
ifstream g("rj.in");
ofstream f("rj.out");
void citire()
{ int i,j;
char v[101];
g>>n>>m;
g.getline(v, m+1);
for(i=0;i<n;i++)
{
g.getline(v,m+1);
for(j=0;j<=m;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]=1;
xR=i;
yR=j-1;
}
else if(v[j-1]=='J')
{
matj[i][j-1]=1;
xJ=i;
yJ=j-1;
}
}
}
}
int bun( int ii,int jj)
{
return(ii>=0)&&(ii<n)&&(jj<m)&&(jj>=0);
}
void leer()
{ short int ii,jj,k;
while(first<=last)
{
for(k=0;k<8;k++)
{
ii=x[first]+dx[k];
jj=y[first]+dy[k];
if(bun(ii,jj))
if(matr[ii][jj]==0)
{ pas=matr[x[first]][y[first]];
pas++;
matr[ii][jj]=pas;
last++;
x[last]=ii;
y[last]=jj;
}
}
first++;
}
}
int leej()
{ short int ii,jj,k;
while(first<=last)
{
for(k=0;k<8;k++)
{
ii=x[first]+dx[k];
jj=y[first]+dy[k];
if(bun(ii,jj))
if(matj[ii][jj]==0)
{ pas=matj[x[first]][y[first]];
if(pas==matr[x[first]][y[first]]){f<<matr[x[first]][y[first]]<<" "<<x[first]+1<<" "<<y[first]+1<<endl; return 0;}
pas++;
matj[ii][jj]=pas;
last++;
x[last]=ii;
y[last]=jj;
}
}
first++;
}
}
int main()
{ citire();
x[0]=xR;
y[0]=yR;
leer();
first=0;last=0;
x[0]=xJ;
y[0]=yJ;
leej();
f.close();
return 0;
}