Pagini recente » Cod sursa (job #1190677) | Cod sursa (job #840412) | Cod sursa (job #424575) | Cod sursa (job #212942) | Cod sursa (job #878005)
Cod sursa(job #878005)
#include <fstream>
#include<iomanip>
using namespace std;
ifstream f("rj.in");ofstream g("rj.out");
int a[103][103],b[103][103],xx,yy,n,m,i,j,k,p,u;
int c[20003],x,R,J; char sir[103];
int main()
{
f>>n>>m;f.get();
for(j=0;j<=m+1;j++) {a[0][j]=-1;a[n+1][j]=-1;}
for(i=0;i<=n+1;i++) {a[i][0]=-1;a[i][m+1]=-1;}
for(i=1;i<=n;i++){
f.get(sir,103);f.get();
for(j=0;j<m;j++){
if(sir[j]=='X')a[i][j+1]=-1;
if(sir[j]=='R'){R=i*1000+j+1;}
if(sir[j]=='J'){J=i*1000+j+1;}
}
}
for (i=0;i<=n+1;i++)
for(j=0;j<=m+1;j++)b[i][j]=a[i][j];
//romeo
i=R/1000;j=R%1000;
a[i][j]=1;p=1;u=1;
c[1]=i*1000+j;
while(p<=u){
x=c[p];i=x/1000;j=x%1000; //x-punct curent
if(a[i][j+1]==0) {a[i][j+1]=a[i][j]+1;u++;c[u]=i*1000+j+1;}
if(a[i][j-1]==0) {a[i][j-1]=a[i][j]+1;u++;c[u]=i*1000+j-1;}
if(a[i+1][j]==0) {a[i+1][j]=a[i][j]+1;u++;c[u]=(i+1)*1000+j;}
if(a[i-1][j]==0) {a[i-1][j]=a[i][j]+1;u++;c[u]=(i-1)*1000+j;}
if(a[i-1][j-1]==0) {a[i-1][j-1]=a[i][j]+1;u++;c[u]=(i-1)*1000+j-1;}
if(a[i-1][j+1]==0) {a[i-1][j+1]=a[i][j]+1;u++;c[u]=(i-1)*1000+j+1;}
if(a[i+1][j+1]==0) {a[i+1][j+1]=a[i][j]+1;u++;c[u]=(i+1)*1000+j+1;}
if(a[i+1][j-1]==0) {a[i+1][j-1]=a[i][j]+1;u++;c[u]=(i+1)*1000+j-1;}
p++;
}
//julieta
i=J/1000;j=J%1000;
b[i][j]=1;p=1;u=1;
c[1]=i*1000+j;
while(p<=u){
x=c[p];i=x/1000;j=x%1000; //x-punct curent
if(b[i][j+1]==0) {b[i][j+1]=b[i][j]+1;u++;c[u]=i*1000+j+1;}
if(b[i][j-1]==0) {b[i][j-1]=b[i][j]+1;u++;c[u]=i*1000+j-1;}
if(b[i+1][j]==0) {b[i+1][j]=b[i][j]+1;u++;c[u]=(i+1)*1000+j;}
if(b[i-1][j]==0) {b[i-1][j]=b[i][j]+1;u++;c[u]=(i-1)*1000+j;}
if(b[i-1][j-1]==0) {b[i-1][j-1]=b[i][j]+1;u++;c[u]=(i-1)*1000+j-1;}
if(b[i-1][j+1]==0) {b[i-1][j+1]=b[i][j]+1;u++;c[u]=(i-1)*1000+j+1;}
if(b[i+1][j+1]==0) {b[i+1][j+1]=b[i][j]+1;u++;c[u]=(i+1)*1000+j+1;}
if(b[i+1][j-1]==0) {b[i+1][j-1]=b[i][j]+1;u++;c[u]=(i+1)*1000+j-1;}
p++;
}
int ii,jj,mini=100000;
for (i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(a[i][j]!=-1&&a[i][j]!=0&&a[i][j]==b[i][j]&&mini>a[i][j]){mini=a[i][j];ii=i;jj=j;}
g<<mini<<" "<<ii<<" "<<jj<<'\n';
f.close ();
g.close ();
return 0;
}