Pagini recente » Cod sursa (job #2969162) | Cod sursa (job #1094263) | Cod sursa (job #139932) | Cod sursa (job #3281867) | Cod sursa (job #118517)
Cod sursa(job #118517)
#include <fstream.h>
#include <math.h>
#include <values.h>
const int l[9]={-1,-1,-1,0,0,1,1,1};
const int c[9]={1,0,-1,1,-1,1,-1,0};
long a[104][104];
long x[10000],y[10000],m,n,xmin,ymin,minute=MAXINT;
long nr=2;
void citire()
{
ifstream fin("rj.in");
fin>>m>>n;
char c;
fin.get(c);
for (int p=0;p<=n;p++)
{
a[0][p]=MAXINT;
a[m+1][p]=MAXINT;
}
for (int r=0;r<=m;r++)
{
a[r][0]=MAXINT;
a[r][n+1]=MAXINT;
}
for (int i=1;i<=m;i++){
for (int j=1;j<=n;j++){
fin.get(c);
if (c=='J')
{
x[0]=i;
y[0]=j;
a[i][j]=-1;
}
if (c=='R')
{
x[1]=i;
y[1]=j;
a[i][j]=1;
}
if (c=='X')
a[i][j]=-MAXINT;
if (c=='\n')
j=n;
}
if (c!='\n')
fin.get(c);
}
fin.close();
}
long mini(long a,long b)
{
if (a<b)
return a;
return b;
}
void generare()
{
for (long i=0;i<nr;i++){
for (int k=0;k<8;k++)
if (a[x[i]+l[k]] [y[i]+c[k]]==0)
{
x[nr++]=x[i]+l[k];
y[nr-1]=y[i]+l[k];
if (a[x[i]][y[i]]<0)
a[x[i]+l[k]][y[i]+c[k]]=a[x[i]][y[i]]-1;
else
a[x[i]+l[k]][y[i]+c[k]]=a[x[i]][y[i]]+1;
}
}
}
void cauta()
{
for (int i=1;i<=m;i++)
for (int j=1;j<=n;j++)
if (a[i][j]!=MAXINT)
{
if (a[i][j]<0)
for (int k=0;k<8;k++)
if (a[i+l[k]][j+c[k]]==a[i][j]*(-1)-1)
{
minute=fabs(a[i][j]);
xmin=i;
ymin=j;
return;
}
}
}
int main()
{
ofstream fout("rj.out");
citire();
generare();
cauta();
fout<<minute<<" "<<xmin<<" "<<ymin<<"\n";
fout.close();
return 0;
}