Pagini recente » Atasamentele paginii CeiMaiMariOlimpicari: Runda #3 | Cod sursa (job #1595912) | Cod sursa (job #1727944) | Cod sursa (job #1178624) | Cod sursa (job #549845)
Cod sursa(job #549845)
#include<fstream>
using namespace std;
fstream f("rj.in", ios::in),
g("rj.out", ios::out);
long long i, j, n, m, romeo[101][101], julieta[101][101], xsj, ysj, xsr, ysr, retine_x[10001], retine_y[10001], retine_c[10001], k;
void lee(long long a[101][101], long long n, long long m, long long xs, long long ys)
{
long long coada_x[10001], coada_y[10001], i, e;
e=1;
coada_x[e]=xs;
coada_y[e]=ys;
for(i=1; i<=e; i++)
{
if(a[coada_x[i]-1][coada_y[i]-1]==0 && coada_x[i]-1>=1 && coada_y[i]-1>=1 )
{
a[coada_x[i]-1][coada_y[i]-1]=a[coada_x[i]][coada_y[i]]+1;
e++;
coada_x[e]=coada_x[i]-1;
coada_y[e]=coada_y[i]-1;
}
if(a[coada_x[i]-1][coada_y[i]]==0 && coada_x[i]-1>=1 )
{
a[coada_x[i]-1][coada_y[i]]=a[coada_x[i]][coada_y[i]]+1;
e++;
coada_x[e]=coada_x[i]-1;
coada_y[e]=coada_y[i];
}
if(a[coada_x[i]-1][coada_y[i]+1]==0 && coada_x[i]-1>=1 && coada_y[i]+1<=m )
{
a[coada_x[i]-1][coada_y[i]+1]=a[coada_x[i]][coada_y[i]]+1;
e++;
coada_x[e]=coada_x[i]-1;
coada_y[e]=coada_y[i]+1;
}
if(a[coada_x[i]][coada_y[i]-1]==0 && coada_y[i]-1>=1 )
{
a[coada_x[i]][coada_y[i]-1]=a[coada_x[i]][coada_y[i]]+1;
e++;
coada_x[e]=coada_x[i];
coada_y[e]=coada_y[i]-1;
}
if(a[coada_x[i]][coada_y[i]+1]==0 && coada_y[i]+1<=m )
{
a[coada_x[i]][coada_y[i]+1]=a[coada_x[i]][coada_y[i]]+1;
e++;
coada_x[e]=coada_x[i];
coada_y[e]=coada_y[i]+1;
}
if(a[coada_x[i]+1][coada_y[i]-1]==0 && coada_x[i]+1<=n && coada_y[i]-1>=1 )
{
a[coada_x[i]+1][coada_y[i]-1]=a[coada_x[i]][coada_y[i]]+1;
e++;
coada_x[e]=coada_x[i]+1;
coada_y[e]=coada_y[i]-1;
}
if(a[coada_x[i]+1][coada_y[i]]==0 && coada_x[i]+1<=n )
{
a[coada_x[i]+1][coada_y[i]]=a[coada_x[i]][coada_y[i]]+1;
e++;
coada_x[e]=coada_x[i]+1;
coada_y[e]=coada_y[i];
}
if(a[coada_x[i]+1][coada_y[i]+1]==0 && coada_x[i]+1<=n && coada_y[i]+1<=m )
{
a[coada_x[i]+1][coada_y[i]+1]=a[coada_x[i]][coada_y[i]]+1;
e++;
coada_x[e]=coada_x[i]+1;
coada_y[e]=coada_y[i]+1;
}
}
}
int main()
{
f>>n>>m;
f.get();
char a[n+1][m+1];
for(i=1; i<=n; i++)
{
for(j=1; j<=m; j++)
f.get(a[i][j]);
f.get();
}
for(i=1; i<=n; i++)
{
for(j=1; j<=m; j++)
{
if(a[i][j]=='X')
romeo[i][j]=-1;
if(a[i][j]==' ')
romeo[i][j]=0;
if(a[i][j]=='R')
{
xsr=i;
ysr=j;
romeo[i][j]=1;
}
if(a[i][j]=='J')
romeo[i][j]=0;
}
}
for(i=1; i<=n; i++)
{
for(j=1; j<=m; j++)
{
if(a[i][j]=='X')
julieta[i][j]=-1;
if(a[i][j]==' ')
julieta[i][j]=0;
if(a[i][j]=='J')
{
xsj=i;
ysj=j;
julieta[i][j]=1;
}
if(a[i][j]=='R')
julieta[i][j]=0;
}
}
lee(romeo, n, m, xsr, ysr);
lee(julieta, n, m, xsj, ysj);
k=0;
for(i=1; i<=n; i++)
{
for(j=1; j<=m; j++)
{
if(romeo[i][j]==julieta[i][j] && romeo[i][j]>0)
{
k++;
retine_x[k]=i;
retine_y[k]=j;
retine_c[k]=romeo[i][j];
}
}
}
long long minim=100000, minx, miny;
for(i=1; i<=k; i++)
{
if(retine_c[i]<minim)
{
minim=retine_c[i];
minx=retine_x[i];
miny=retine_y[i];
}
}
g<<minim<<" "<<minx<<" "<<miny<<endl;
f.close();
g.close();
return 0;
}