Pagini recente » Cod sursa (job #350728) | Cod sursa (job #2147432) | Cod sursa (job #2329199) | Cod sursa (job #2975051) | Cod sursa (job #1813137)
#include <iostream>
#include <fstream>
#include <queue>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
int R[101][101];
int J[101][101];
int dx[8]={-1,-1,-1,0,0,1,1,1};
int dy[8]={-1,0,1,-1,1,-1,0,1};
queue< pair <int,int> > coada;
int n,m,iu,ju;
bool valid(int i, int j)
{
if(i<1 or j<1 or i>n or j>m) return false;
if(R[i][j]==-1) return false;
return true;
}
void Lee(int a[101][101],int x, int y)
{ int i,j;
int k;
a[x][y]=1;
coada.push(make_pair(x,y));
while(!coada.empty())
{
i=coada.front().first;
j=coada.front().second;
coada.pop();
for(k=0;k<=7;k++)
{
iu=i+dx[k];
ju=j+dy[k];
if(valid(iu,ju) and a[iu][ju]<1)
{
a[iu][ju]=a[i][j]+1;
coada.push(make_pair(iu,ju));
}
}
}
}
int main()
{
int r1,r2,j1,j2,i,j;
char x;
f>>n>>m;
f>>noskipws>>x;
i=1;
j=1;
while(f>>noskipws>>x)
{
if(x=='\n') {i++; j=1;}
else{
if(x=='R')
{
r1=i;
r2=j;
}
if(x=='J')
{
j1=i;
j2=j;
}
if(x=='X')
{
R[i][j]=-1;
J[i][j]=-1;
}
j++;
}
}
Lee(R,r1,r2);
Lee(J,j1,j2);
int l,c,v;
l=n+1;
c=m+1;
v=n*m+1;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
if(R[i][j]==J[i][j] and R[i][j]+J[i][j]>0)
{
if(R[i][j]<v)
{
v=R[i][j];
l=i;
c=j;
}
else if(R[i][j]==v)
{
if((i<l)||(l==i&&j<c))
{
l=i;
c=j;
}
}
}
}
g<<v<<' '<<l<<' '<<c;
return 0;}