Cod sursa(job #234310)

Utilizator raica_cristiraica dumitru cristian raica_cristi Data 20 decembrie 2008 17:50:21
Problema Rj Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.4 kb
#include<stdio.h>
#define po 101 
int a[po][po],b[po][po];

int fill (int a[po][po],int &n,int &m)
{
    int i,k,pas,d,e;
    pas=1;e=1;
    while(e)
    {e=0;
    pas++;
    for(i=1;i<=n;i++)
    for(k=1;k<=m;k++)
    {
                     if(a[i][k]==0)
    if(a[i-1][k]==pas-1 || a[i+1][k]==pas-1 || a[i][k-1]==pas-1 || a[i][k+1]==pas-1 || a[i-1][k-1]==pas-1 || a[i-1][k+1]==pas-1 || a[i+1][k-1]==pas-1 || a[i+1][k+1]==pas-1)
   { a[i][k]=pas;
   e=1;
}
}}
}
int main ()
{
    int n,m,i,k;
    freopen("rj.in","r",stdin);
    freopen("rj.out","w",stdout);
    scanf("%d%d",&n,&m);
    int xr,yr,x,yj;
    char q[m];gets(q);
    for(i=1;i<=n;i++)
 {  gets(q);
                     for(k=0;k<m;k++)
              {     //  scanf("%c",&q);
          
                     if(q[k]=='x' || q[k]=='X')
                     b[i][k+1]=a[i][k+1]=20001;
                     if(q[k]=='R')
                     a[i][k+1]=1;
                     else
                     if(q[k]=='J')
                     b[i][k+1]=1;
                     }
           
}
fill(a,n,m);
fill(b,n,m);
int min,y;
min==20000;
for(i=1;i<=n;i++)
for(k=1;k<=m;k++)
{
                 if(a[i][k]==b[i][k] && a[i][k]<min && a[i][k]>0)
                 {min=a[i][k];
                 x=i;
                 y=k;
                 }
                 }
                 printf("%d %d %d",min,x,y);
return 0;
}