Pagini recente » Cod sursa (job #2325672) | Cod sursa (job #1933249) | Cod sursa (job #343092) | Cod sursa (job #2592724) | Cod sursa (job #272656)
Cod sursa(job #272656)
#include<fstream.h>
#include<values.h>
ifstream fin("3-rj.in");
ofstream fout("rj.out");
char a[120][120];
int rom[110][110];
int jul[110][110];
int n,m,x,y;
int l[8]={-1,-1,-1,0,1,1,1,0};
int c[8]={-1,0,1,1,1,0,-1,-1};
void citire()
{char c;
int i,j,g;
fin>>n>>m;
fin.get(c);
for(i=0;i<n;i++)
{g=0;
for(j=0;j<m;j++)
{fin.get(c);
if(c!='\n') a[i][j]=c;
else while(j<m)
{a[i][j]=' ';
j++;g=1;
}
}
if(g==0) fin.get(c);
}
for(i=0;i<n;i++)
for(j=0;j<m;j++)
if(a[i][j]=='R') rom[i][j]=1;
else if(a[i][j]=='J') jul[i][j]=1;
}
/*void afisare()
{int i,j;
for(i=0;i<n;i++)
{for(j=0;j<m;j++)
fout<<rom[i][j]<<" ";
fout<<'\n';
}
fout<<'\n';
for(i=0;i<n;i++)
{for(j=0;j<m;j++)
fout<<jul[i][j]<<" ";
fout<<'\n';
}
fout<<'\n';
for(i=0;i<n;i++)
{for(j=0;j<m;j++)
fout<<a[i][j];
fout<<'\n';
}
}
*/
void lee()
{int gata=0,ii,jj,i,j,k;
int pas=1,min;
min=MAXINT;
while(!gata)
{gata=1;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{if(rom[i][j]==pas)
for(k=0;k<=7;k++)
{ii=i+l[k];
jj=j+c[k];
if(ii>=0 && ii<n && jj>=0 && jj<m)
if(a[ii][jj]==' ' && rom[ii][jj]==0)
{rom[ii][jj]=pas+1;gata=0;}
}
if(jul[i][j]==pas)
for(k=0;k<=7;k++)
{ii=i+l[k];
jj=j+c[k];
if(ii>=0 && ii<n && jj>=0 && jj<m)
if(a[ii][jj]==' ' && jul[ii][jj]==0)
{jul[ii][jj]=pas+1;gata=0;}
}
}
pas++;
}
for(i=0;i<n;i++)
for(j=0;j<m;j++)
if(rom[i][j]!=0 && rom[i][j]==jul[i][j])
if(rom[i][j]<min)
{min=rom[i][j];
x=i;y=j;gata=1;
}
else if(rom[i][j]==min)
if(j<y) {min=rom[i][j];
x=i;y=j;gata=1;
}
//afisare();
fout<<min<<" "<<x+1<<" "<<y+1;
}
int main()
{citire();
lee();
fin.close();
fout.close();
return 0;
}