Pagini recente » Cod sursa (job #664149) | Cod sursa (job #1693502) | Cod sursa (job #2130301) | Cod sursa (job #1121072) | Cod sursa (job #128672)
Cod sursa(job #128672)
#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};
int a[104][104];
int x[10000],y[10000],m,n,xmin,ymin,minute=MAXINT;
int nr=2;
char mat[105][105];
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+1;r++)
{
a[r][0]=MAXINT;
a[r][n+1]=MAXINT;
}
for (int i=1; i<=m; i++)
{
for (int k=1; k<=n; k++)
{
fin.get(c);
a[i][k]=MAXINT;
if (c=='R')
{
x[0]=i;
y[0]=k;
a[i][k]=1;
}
if (c=='J')
{
x[1]=i;
y[1]=k;
a[i][k]=-1;
}
if (c==' ')
a[i][k]=0;
}
fin.get(c);
}
fin.close();
}
long mini(long a,long b)
{
if (a<b)
return a;
return b;
}
void generare()
{
nr=2;
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]+c[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()
{
minute=31543;
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++)
for (int o=k+1;o<8;o++)
if (a[i+l[k]][j+c[k]]==a[i+l[o]][j+c[o]]*(-1))
{
if (fabs(a[i][j])<minute)
{
minute=fabs(a[i][j]);
xmin=i;
ymin=j;
}
}
}
}
int main()
{
ofstream fout("rj.out");
citire();
generare();
cauta();
fout<<minute<<" "<<xmin<<" "<<ymin<<"\n";
fout.close();
return 0;
}