Cod sursa(job #78394)

Utilizator marcelcodreaCodrea Marcel marcelcodrea Data 17 august 2007 16:21:59
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 3.33 kb
#include<stdio.h>
int n,m,a[110][110],rom[110][110],jul[110][110],i,j,ok;
char aux;
int main()
{
 freopen("rj.in","r",stdin);
 freopen("rj.out","w",stdout);
 scanf("%ld %ld",&n,&m);
 scanf("%c",&aux);
 for(i=1;i<=n;i++)
 {
  for(j=1;j<=m;j++)
  {
   scanf("%c",&aux);
   if (aux=='J')
    jul[i][j]=2;
   if (aux=='R')
    rom[i][j]=2;
   if (aux=='X')
      {
      jul[i][j]=1;
      rom[i][j]=1;
      }
  }
  scanf("%c",&aux);
 }
  ok=1;
 for(i=1;i<=n;i++)
  for(j=1;j<=m;j++)
  {
   if (rom[i][j]==0) rom[i][j]=15000;
   if (jul[i][j]==0) jul[i][j]=15000;
      }
  while (ok)
     {
     ok=0;
      for(i=1;i<=n;i++)
       for(j=1;j<=m;j++)
        if (rom[i][j]!=1)
            {
             if (rom[i+1][j]>rom[i][j]+1)
              {
              rom[i+1][j]=rom[i][j]+1;
              ok=1;
              }
             if (rom[i+1][j-1]>rom[i][j]+1)
              {
              rom[i+1][j-1]=rom[i][j]+1;
              ok=1;
              }
             if (rom[i+1][j+1]>rom[i][j]+1)
               {
               rom[i+1][j+1]=rom[i][j]+1;
               ok=1;
               }
             if (rom[i][j+1]>rom[i][j]+1)
               {
               rom[i][j+1]=rom[i][j]+1;
               ok=1;
               }
             if (rom[i][j-1]>rom[i][j]+1)
               {
                 rom[i][j-1]=rom[i][j]+1;
                 ok=1;
               }
             if (rom[i-1][j]>rom[i][j]+1)
               {
                rom[i-1][j]=rom[i][j]+1;
                ok=1;
               }
             if (rom[i-1][j-1]>rom[i][j]+1)
              {
               rom[i-1][j-1]=rom[i][j]+1;
               ok=1;
              }
             if (rom[i-1][j+1]>rom[i][j]+1)
              {
               rom[i-1][j+1]=rom[i][j]+1;
               ok=1;
              }
            }
     }
   ok=1;
    while (ok)
     {
     ok=0;
      for(i=1;i<=n;i++)
       for(j=1;j<=m;j++)
        if (jul[i][j]!=1)
            {
             if (jul[i+1][j]>jul[i][j]+1)
              {
              jul[i+1][j]=jul[i][j]+1;
              ok=1;
              }
             if (jul[i+1][j-1]>jul[i][j]+1)
              {
              jul[i+1][j-1]=jul[i][j]+1;
              ok=1;
              }
             if (jul[i+1][j+1]>jul[i][j]+1)
               {
               jul[i+1][j+1]=jul[i][j]+1;
               ok=1;
               }
             if (jul[i][j+1]>jul[i][j]+1)
               {
               jul[i][j+1]=jul[i][j]+1;
               ok=1;
               }
             if (jul[i][j-1]>jul[i][j]+1)
               {
                 jul[i][j-1]=jul[i][j]+1;
                 ok=1;
               }
             if (jul[i-1][j]>jul[i][j]+1)
               {
                jul[i-1][j]=jul[i][j]+1;
                ok=1;
               }
             if (jul[i-1][j-1]>jul[i][j]+1)
              {
               jul[i-1][j-1]=jul[i][j]+1;
               ok=1;
              }
             if (jul[i-1][j+1]>jul[i][j]+1)
              {
               jul[i-1][j+1]=jul[i][j]+1;
               ok=1;
              }
            }
     }
  for(i=1;i<=n;i++)
   for(j=1;j<=m;j++)
    if (jul[i][j]==rom[i][j]&&rom[i][j]!=15000&&rom[i][j]!=1)
     {
     printf("%ld %ld %ld \n",jul[i][j]-1,i,j);
     return 0;
     }
  return 0;
  
}