Pagini recente » Cod sursa (job #1079002) | Cod sursa (job #292431) | Cod sursa (job #217744) | Cod sursa (job #2079849) | Cod sursa (job #1808138)
#include <fstream>
#include <queue>
using namespace std;
ofstream g("rj.out");
int n,m;
float a[110][110];
const short dx[]={0,-1,-1,-1,0,1,1,1},
dy[]={1,1,0,-1,-1,-1,0,1};
void afis();
int main()
{
ifstream f("rj.in");
f>>n>>m;
f.get();
char aux;
int i,j;
queue < pair<int,int> > c;
for(i=1; i<=n; i++)
{
for(j=1; j<=m; j++)
{
f.get(aux);
if(aux=='X')
a[i][j]=-1;
else if(aux=='R')
a[i][j]=3, c.push(make_pair(i,j));
else if(aux=='J')
a[i][j]=-3, c.push(make_pair(i,j));
}
f.get();
}
f.close();
for(i=0; i<=n+1; i++)
a[i][0]=a[i][m+1]=-1;
for(j=0; j<=m+1; j++)
a[0][j]=a[n+1][j]=-1;
int dir,xnou,ynou;
while(!c.empty())
{
for(dir=0; dir<8; dir++)
{
xnou=c.front().first +dx[dir];
ynou=c.front().second +dy[dir];
if(!a[xnou][ynou])
{
c.push(make_pair(xnou,ynou));
if(a[c.front().first][c.front().second]<0)
a[xnou][ynou]=a[c.front().first][c.front().second]-1;
else
a[xnou][ynou]=a[c.front().first][c.front().second]+1;
}
else if(a[xnou][ynou]==-1*a[c.front().first][c.front().second]+1)
{
g<<a[xnou][ynou]-2<<' '<<xnou<<' '<<ynou;
g.close();
return 0;
}
}
c.pop();
}
return 0;
}
void afis()
{
for(int i=1; i<=n; i++)
{
for(int j=1; j<=m; j++)
{
if(a[i][j]>-1)
g<<' ';
g<<a[i][j]<<' ';
}
g<<'\n';
}
g<<'\n';
}