Cod sursa(job #139725)
Utilizator | Data | 20 februarie 2008 15:54:41 | |
---|---|---|---|
Problema | Rj | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 2.54 kb |
#include<fstream.h>
#include<string.h>
#include<stdlib.h>
ifstream fin("rj.in");
ofstream fout("rj.out");
int n,m,i,j,k,cont=150,pas,a[112][112],b[112][112],r,ju,pozi=150,pozj=150,boo=1;
int c1[8]={-1,-1,-1,0,0,1,1,1},c2[8]={-1,0,1,-1,1,-1,0,1};
char c;
int OK(int i, int j)
{
if(i>=1&&i<=n&&j>=1&&j<=m) return 1;
return 0;
}
int main()
{ fin>>n>>m;
for(i=1;i<=n;i++)
for(j=0; j<=m; j++ )
{ c=fin.get(); if(c=='R') b[i][j]=1; if(c=='J') a[i][j]=1; if(c=='X') {a[i][j]=-1; b[i][j]=-1;} }
pas=1;
while(boo)
{ boo=0;
for(i=1; i<=n; i++)
for(j=1;j<=m;j++)
{ if(b[i][j]==pas)
{r=0;
for(k=0; k<8; k++)
if( OK(i+c1[k],j+c2[k]) )
if(b[i+c1[k]][j+c2[k]]==0) { b[i+c1[k]][j+c2[k]]=pas+1; boo=1; }
}
if(a[i][j]==pas)
{ju=0;
for(k=0; k<8; k++)
if( OK(i+c1[k],j+c2[k]) )
if( a[i+c1[k]][j+c2[k]]==0) { a[i+c1[k]][j+c2[k]]=pas+1; boo=1; }
}
}
pas++;
}
for(i=1;i<=n;i++)
for(j=1; j<=m; j++)
if(a[i][j]==b[i][j]&&a[i][j]<cont&&a[i][j]!=-1&&a[i][j]!=0) { pozi=i; cont=a[i][j]; pozj=j; }
fout<<--cont<<" "<<pozi<<" "<<pozj<<" ";
/* fout<<"\n";
for(i=1; i<=n; i++)
{ fout<<"\n";
for(j=1;j<=m; j++)
fout<<b[i][j]<<" ";
}
fout<<"\n";
for(i=1; i<=n; i++)
{ fout<<"\n";
for(j=1;j<=m; j++)
fout<<a[i][j]<<" ";
}
*/
return 0;
}