Pagini recente » Cod sursa (job #1600810) | Cod sursa (job #2081297) | Cod sursa (job #2980822) | Cod sursa (job #718101) | Cod sursa (job #795916)
Cod sursa(job #795916)
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("rj.in");
ofstream fout("rj.out");
int n,m;
int matricer[105][105],matricej[105][105];
int di[8]={-1,-1,-1,0,+1,+1,+1,0};
int dj[8]={-1,0,+1,+1,+1,0,-1,-1};
int ri,rj,ji,jj;
struct coada{
int i,j;
}c[100*100+20];
void citire(){
char a;
f>>n>>m;
f.get(a);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
f.get(a);
switch(a){
case 'R':{
ri=i;
rj=j;
break;
}
case 'J':{
ji=i;
jj=j;
break;
}
case 'X':{
matricer[i][j]=-1;
matricej[i][j]=-1;
break;
}
}
}
f.get(a);
}
}
void bordare(){
int i,j;
for(j=0;j<=m+1;j++){
matricer[0][j]=-1;
matricer[n+1][j]=-1;
matricej[0][j]=-1;
matricej[n+1][j]=-1;
}
for(i=0;i<=n+1;i++){
matricer[i][0]=-1;
matricer[i][m+1]=-1;
matricej[i][0]=-1;
matricej[i][m+1]=-1;
}
}
void algoritm(int x[][105],int z,int t){
int u=1;
c[0].i=z;
c[0].j=t;
x[z][t]=1;
for(int p=0;p<u;p++){
int ic=c[p].i;
int jc=c[p].j;
for(int v=0;v<8;v++){
int i2=ic+di[v];
int j2=jc+dj[v];
if(x[i2][j2]==0){
x[i2][j2]=x[ic][jc]+1;
c[u].i=i2;
c[u].j=j2;
u++;
}
}
}
}
void drum(){
int minim=10000000;
int coloana=10000000;
int linie=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(matricer[i][j]==matricej[i][j] && matricer[i][j]!=-1 && matricer[i][j]!=0)
if(matricer[i][j]<minim){
minim=matricer[i][j];
coloana=j;
linie=i;
}
else if(matricer[i][j]==minim)
if(i<coloana){
minim=matricer[i][j];
coloana=j;
linie=i;
}
fout<<minim<<" "<<linie<<" "<<coloana;
}
/*void afisare(int x[][105]){
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++)
fout<<x[i][j]<<" ";
fout<<"\n";
}
fout<<"\n\n";
}*/
int main()
{
citire();
bordare();
algoritm(matricer,ri,rj);
//afisare(matricer);
algoritm(matricej,ji,jj);
//afisare(matricej);
drum();
return 0;
}