Cod sursa(job #865895)
Utilizator | Data | 27 ianuarie 2013 11:30:20 | |
---|---|---|---|
Problema | Rj | Scor | 100 |
Compilator | cpp | Status | done |
Runda | 23_reloaded_1 | Marime | 4.21 kb |
#include<stdio.h>
long n,m,l,i,t2,j,a[200][200],b[200][200],c,d,e,t,ok,u,max,k,l3;
char ch[200][200];
int main()
{
freopen("rj.in","r",stdin);
freopen("rj.out","w",stdout);
scanf("%ld %ld\n",&n,&m);
for (i=1;i<=n;i++)
gets(ch[i]);
for (i=1;i<=n;i++)
for (j=0;j<=m-1;j++)
{
if (ch[i][j]=='X')
a[i][j+1]=1;
b[i][j+1]=a[i][j+1];
if (ch[i][j]=='R')
{
l=i;
t2=j+1;
}
if(ch[i][j]=='J')
{
c=i;
d=j+1;
}
}
a[l][t2]=2;
b[c][d]=2;
u=1;
while (ok==0)
{
u++;
ok=1;
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
if (a[i][j]==u)
{
if (a[i][j+1]==0)
{
ok=0;
a[i][j+1]=u+1;
}
if (a[i][j-1]==0)
{
ok=0;
a[i][j-1]=u+1;
}
if (a[i-1][j]==0)
{
ok=0;
a[i-1][j]=u+1;
}
if (a[i-1][j-1]==0)
{
ok=0;
a[i-1][j-1]=u+1;
}
if (a[i-1][j+1]==0)
{
ok=0;
a[i-1][j+1]=u+1;
}
if (a[i+1][j]==0)
{
ok=0;
a[i+1][j]=u+1;
}
if (a[i+1][j+1]==0)
{
ok=0;
a[i+1][j+1]=u+1;
}
if (a[i+1][j-1]==0)
{
ok=0;
a[i+1][j-1]=u+1;
}
}
if (ok==1)
break;
ok=1;
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
if (a[i][j]==0)
ok=0;
}
u=1;
ok=0;
while (ok==0)
{
u++;
ok=1;
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
if (b[i][j]==u)
{
if (b[i][j+1]==0)
{
ok=0;
b[i][j+1]=u+1;
}
if (b[i][j-1]==0)
{
ok=0;
b[i][j-1]=u+1;
}
if (b[i-1][j]==0)
{
ok=0;
b[i-1][j]=u+1;
}
if (b[i-1][j-1]==0)
{
ok=0;
b[i-1][j-1]=u+1;
}
if (b[i-1][j+1]==0)
{
ok=0;
b[i-1][j+1]=u+1;
}
if (b[i+1][j]==0)
{
ok=0;
b[i+1][j]=u+1;
}
if (b[i+1][j+1]==0)
{
ok=0;
b[i+1][j+1]=u+1;
}
if (b[i+1][j-1]==0)
{
ok=0;
b[i+1][j-1]=u+1;
}
}
if (ok==1)
break;
ok=1;
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
if (b[i][j]==0)
ok=0;
}
ok=0;
max=200000;
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
if (a[i][j]==b[i][j]&&a[i][j]>1)
if (max>a[i][j]-1)
{
max=a[i][j]-1;
k=i;
l3=j;
}
printf("%ld %ld %ld",max,k,l3);
}