Pagini recente » Cod sursa (job #1566331) | Cod sursa (job #1462292) | Istoria paginii utilizator/imparatulverde | Cod sursa (job #1765944) | Cod sursa (job #1511236)
#include <stdio.h>
using namespace std;
short rom[101][101],jul[101][101];
struct love
{
int lin;
int col;
}cd[100*100+1];
int main()
{
FILE *fin,*fout;
fin=fopen("rj.in","r");
fout=fopen("rj.out","w");
int i,j,n,m,ir=0,jr=0,ij=0,jj=0,pr=0,ul=0,tmin=100*100,indi=0,indj=0,t=0;
char c;
fscanf(fin,"%d%d",&n,&m);
for(i=1;i<=n;i++)
{
c=fgetc(fin);
for(j=1;j<=m;j++)
{
c=fgetc(fin);
if(c=='R')
{
ir=i;
jr=j;
rom[i][j]=-2;
}
if(c=='J')
{
ij=i;
jj=j;
jul[i][j]=-2;
}
if(c=='X')
{
jul[i][j]=-1;
rom[i][j]=-1;
}
}
}
for(j=0;j<=m;j++)
{
rom[0][j]=-1;
jul[0][j]=-1;
rom[n+1][j]=-1;
jul[n+1][j]=-1;
}
for(i=0;i<=n;i++)
{
rom[i][0]=-1;
jul[i][0]=-1;
rom[i][m+1]=-1;
jul[i][m+1]=-1;
}
pr=1;
ul=0;
i=ir;
j=jr;
{
if(rom[i+1][j]==0)
{
rom[i+1][j]=1;
ul++;
cd[ul].lin=i+1;
cd[ul].col=j;
}
if(rom[i-1][j]==0)
{
rom[i-1][j]=1;
ul++;
cd[ul].lin=i-1;
cd[ul].col=j;
}
if(rom[i+1][j+1]==0)
{
rom[i+1][j+1]=1;
ul++;
cd[ul].lin=i+1;
cd[ul].col=j+1;
}
if(rom[i+1][j-1]==0)
{
rom[i+1][j-1]=1;
ul++;
cd[ul].lin=i+1;
cd[ul].col=j-1;
}
if(rom[i-1][j-1]==0)
{
rom[i-1][j-1]=1;
ul++;
cd[ul].lin=i-1;
cd[ul].col=j-1;
}
if(rom[i-1][j+1]==0)
{
rom[i-1][j+1]=1;
ul++;
cd[ul].lin=i-1;
cd[ul].col=j+1;
}
if(rom[i][j+1]==0)
{
rom[i][j+1]=1;
ul++;
cd[ul].lin=i;
cd[ul].col=j+1;
}
if(rom[i][j-1]==0)
{
rom[i][j-1]=1;
ul++;
cd[ul].lin=i;
cd[ul].col=j-1;
}
}
while(pr<=ul)
{
i=cd[pr].lin;
j=cd[pr].col;
pr++;
if(rom[i+1][j]==0)
{
rom[i+1][j]=rom[i][j]+1;
ul++;
cd[ul].lin=i+1;
cd[ul].col=j;
}
if(rom[i-1][j]==0)
{
rom[i-1][j]=rom[i][j]+1;
ul++;
cd[ul].lin=i-1;
cd[ul].col=j;
}
if(rom[i+1][j+1]==0)
{
rom[i+1][j+1]=rom[i][j]+1;
ul++;
cd[ul].lin=i+1;
cd[ul].col=j+1;
}
if(rom[i+1][j-1]==0)
{
rom[i+1][j-1]=rom[i][j]+1;
ul++;
cd[ul].lin=i+1;
cd[ul].col=j-1;
}
if(rom[i-1][j-1]==0)
{
rom[i-1][j-1]=rom[i][j]+1;
ul++;
cd[ul].lin=i-1;
cd[ul].col=j-1;
}
if(rom[i-1][j+1]==0)
{
rom[i-1][j+1]=rom[i][j]+1;
ul++;
cd[ul].lin=i-1;
cd[ul].col=j+1;
}
if(rom[i][j+1]==0)
{
rom[i][j+1]=rom[i][j]+1;
ul++;
cd[ul].lin=i;
cd[ul].col=j+1;
}
if(rom[i][j-1]==0)
{
rom[i][j-1]=rom[i][j]+1;
ul++;
cd[ul].lin=i;
cd[ul].col=j-1;
}
}
///
pr=1;
ul=0;
i=ij;
j=jj;
{
if(jul[i+1][j]==0)
{
jul[i+1][j]=1;
ul++;
cd[ul].lin=i+1;
cd[ul].col=j;
}
if(jul[i-1][j]==0)
{
jul[i-1][j]=1;
ul++;
cd[ul].lin=i-1;
cd[ul].col=j;
}
if(jul[i+1][j+1]==0)
{
jul[i+1][j+1]=1;
ul++;
cd[ul].lin=i+1;
cd[ul].col=j+1;
}
if(jul[i+1][j-1]==0)
{
jul[i+1][j-1]=1;
ul++;
cd[ul].lin=i+1;
cd[ul].col=j-1;
}
if(jul[i-1][j-1]==0)
{
jul[i-1][j-1]=1;
ul++;
cd[ul].lin=i-1;
cd[ul].col=j-1;
}
if(jul[i-1][j+1]==0)
{
jul[i-1][j+1]=1;
ul++;
cd[ul].lin=i-1;
cd[ul].col=j+1;
}
if(jul[i][j+1]==0)
{
jul[i][j+1]=1;
ul++;
cd[ul].lin=i;
cd[ul].col=j+1;
}
if(jul[i][j-1]==0)
{
jul[i][j-1]=1;
ul++;
cd[ul].lin=i;
cd[ul].col=j-1;
}
}
while(pr<=ul)
{
i=cd[pr].lin;
j=cd[pr].col;
pr++;
if(jul[i+1][j]==0)
{
jul[i+1][j]=jul[i][j]+1;
ul++;
cd[ul].lin=i+1;
cd[ul].col=j;
}
if(jul[i-1][j]==0)
{
jul[i-1][j]=jul[i][j]+1;
ul++;
cd[ul].lin=i-1;
cd[ul].col=j;
}
if(jul[i+1][j+1]==0)
{
jul[i+1][j+1]=jul[i][j]+1;
ul++;
cd[ul].lin=i+1;
cd[ul].col=j+1;
}
if(jul[i+1][j-1]==0)
{
jul[i+1][j-1]=jul[i][j]+1;
ul++;
cd[ul].lin=i+1;
cd[ul].col=j-1;
}
if(jul[i-1][j-1]==0)
{
jul[i-1][j-1]=jul[i][j]+1;
ul++;
cd[ul].lin=i-1;
cd[ul].col=j-1;
}
if(jul[i-1][j+1]==0)
{
jul[i-1][j+1]=jul[i][j]+1;
ul++;
cd[ul].lin=i-1;
cd[ul].col=j+1;
}
if(jul[i][j+1]==0)
{
jul[i][j+1]=jul[i][j]+1;
ul++;
cd[ul].lin=i;
cd[ul].col=j+1;
}
if(jul[i][j-1]==0)
{
jul[i][j-1]=jul[i][j]+1;
ul++;
cd[ul].lin=i;
cd[ul].col=j-1;
}
}
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
if(rom[i][j]==jul[i][j])
{
t=rom[i][j];
if(t<tmin&&t>=1)
{
tmin=t;
indi=i;
indj=j;
}
}
}
fprintf(fout,"%d %d %d",tmin+1, indi,indj);
return 0;
}