Cod sursa(job #267907)
Utilizator | Data | 28 februarie 2009 14:58:12 | |
---|---|---|---|
Problema | Rj | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 2.44 kb |
#include <stdio.h>
int r[101][101],ju[101][101],xf,yf,lv,cv,i,j,n,m,k,l,p,min;
char dx[4]={0, 1, 0, -1};
char dy[4]={1, 0, -1, 0};
char c;
int main()
{
freopen("rj.in","r",stdin);
freopen("rj.out","w",stdout);
scanf("%d %d", &n, &m);
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
{
scanf("%c", &c);
if (c=='X')
{
r[i][j]=-1;
ju[i][j]=-1;
}
if (c==' ')
{
r[i][j]=0;
ju[i][j]=0;
}
if (c=='R')
{
r[i][j]=1;
ju[i][j]=0;
}
if (c=='J')
{
ju[i][j]=1;
r[i][j]=0;
}
}
//matricea lui romeo
k=1;
p=0;
while (p==0)
{
p=1;
k++;
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
if (r[i][j]==k-1)
for (l=0;l<4;l++)
{
lv=i+dx[l];
cv=j+dy[l];
if (r[lv][cv]==0)
{
r[lv][cv]=k;
p=0;
}
}
}
//matricea lui julieta
k=1;
p=0;
while (p==0)
{
p=1;
k++;
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
if (ju[i][j]==k-1)
for (l=0;l<4;l++)
{
lv=i+dx[l];
cv=j+dy[l];
if (ju[lv][cv]==0)
{
ju[lv][cv]=k;
p=0;
}
}
}
min=32000;
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
if (r[i][j]==ju[i][j])
if (r[i][j]<min)
{
min=r[i][j];
xf=i;
yf=j;
}
if (p==1)
printf("%d %d %d",k,xf,yf);
return 0;
}