Pagini recente » Cod sursa (job #217653) | Cod sursa (job #1638256) | Cod sursa (job #1678383) | Cod sursa (job #2663222) | Cod sursa (job #345913)
Cod sursa(job #345913)
#include<stdio.h>
#include<iostream>
using namespace std;
short int a[101][101],b[101][101],n,m,i,j,lj,cj,l[10000],c[10000],lr,cr,aux,x,y;
int mint;
char p;
int main()
{
FILE *f=fopen("rj.in","r") , *g=fopen("rj.out","w");
fscanf(f,"%hd%hd",&n,&m);
for(i=1;i<=n;i++)
{fscanf(f,"%c",&p);
for(j=1;j<=m;j++)
{fscanf(f,"%c",&p);
if(p=='X') {a[i][j]=-1; b[i][j]=-1;}
else if(p=='R') {a[i][j]=1;
l[1]=i; c[1]=j; lr=i; cr=j;}
else if(p=='J') {lj=i; cj=j; b[i][j]=1;}
}}
i=1;j=1;
while(i<=j)
{x=l[i]; y=c[i];
if(x==lj && y==cj) break;
aux=a[x][y];
if(x>1)
{if( a[x-1][y]==0 ) {j++; l[j]=x-1; c[j]=y; a[x-1][y]=aux+1; }
if(y>1) if( a[x-1][y-1]==0 ) {j++; l[j]=x-1; c[j]=y-1; a[x-1][y-1]=aux+1; }
if(y<m) if( a[x-1][y+1]==0 ) {j++; l[j]=x-1; c[j]=y+1; a[x-1][y+1]=aux+1; }
}
if(y>1) if( a[x][y-1]==0 ) {j++; l[j]=x; c[j]=y-1; a[x][y-1]=aux+1; }
if(y<m) if( a[x][y+1]==0 ) {j++; l[j]=x; c[j]=y+1; a[x][y+1]=aux+1; }
if(x<n)
{if( a[x+1][y]==0 ) {j++; l[j]=x+1; c[j]=y; a[x+1][y]=aux+1; }
if(y>1) if( a[x+1][y-1]==0 ) {j++; l[j]=x+1; c[j]=y-1; a[x+1][y-1]=aux+1; }
if(y<m) if( a[x+1][y+1]==0 ) {j++; l[j]=x+1; c[j]=y+1; a[x+1][y+1]=aux+1; }
}
i++;}
i=1;j=1; l[1]=lj; c[1]=cj;
while(i<=j)
{x=l[i]; y=c[i];
if(x==lr && y==cr) break;
aux=b[x][y];
if(x>1)
{if( b[x-1][y]==0 ) {j++; l[j]=x-1; c[j]=y; b[x-1][y]=aux+1; }
if(y>1) if( b[x-1][y-1]==0 ) {j++; l[j]=x-1; c[j]=y-1; b[x-1][y-1]=aux+1; }
if(y<m) if( b[x-1][y+1]==0 ) {j++; l[j]=x-1; c[j]=y+1; b[x-1][y+1]=aux+1; }
}
if(y>1) if( b[x][y-1]==0 ) {j++; l[j]=x; c[j]=y-1; b[x][y-1]=aux+1; }
if(y<m) if( b[x][y+1]==0 ) {j++; l[j]=x; c[j]=y+1; b[x][y+1]=aux+1; }
if(x<n)
{if( b[x+1][y]==0 ) {j++; l[j]=x+1; c[j]=y; b[x+1][y]=aux+1; }
if(y>1) if( b[x+1][y-1]==0 ) {j++; l[j]=x+1; c[j]=y-1; b[x+1][y-1]=aux+1; }
if(y<m) if( b[x+1][y+1]==0 ) {j++; l[j]=x+1; c[j]=y+1; b[x+1][y+1]=aux+1; }
}
i++;}
mint=800000;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(a[i][j]==b[i][j] && a[i][j]>0 && a[i][j]<mint) {mint=a[i][j]; lj=i; cj=j;}
fprintf(g,"%d %hd %hd\n",mint,lj,cj);
fclose(f);
fclose(g);
return 0;
}